@devrev/meerkat-node 0.0.90 → 0.0.93
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/__tests__/test-data.js.map +1 -0
- package/cube-to-sql/cube-to-sql.js.map +1 -0
- package/duckdb-exec.js.map +1 -0
- package/duckdb-manager/duckdb-manager.js.map +1 -0
- package/duckdb-singleton.js.map +1 -0
- package/file-manager/file-manager.js.map +1 -0
- package/index.js.map +1 -0
- package/node-sql-to-serialization.js.map +1 -0
- package/package.json +6 -5
- package/utils/duckdb-type-convertor.js.map +1 -0
- package/utils/hash-string.js.map +1 -0
- package/src/__tests__/test-data.js.map +0 -1
- package/src/cube-to-sql/cube-to-sql.js.map +0 -1
- package/src/duckdb-exec.js.map +0 -1
- package/src/duckdb-manager/duckdb-manager.js.map +0 -1
- package/src/duckdb-singleton.js.map +0 -1
- package/src/file-manager/file-manager.js.map +0 -1
- package/src/index.js.map +0 -1
- package/src/node-sql-to-serialization.js.map +0 -1
- package/src/utils/duckdb-type-convertor.js.map +0 -1
- package/src/utils/hash-string.js.map +0 -1
- /package/{src/__tests__ → __tests__}/test-data.js +0 -0
- /package/{src/cube-to-sql → cube-to-sql}/cube-to-sql.js +0 -0
- /package/{src/duckdb-exec.js → duckdb-exec.js} +0 -0
- /package/{src/duckdb-manager → duckdb-manager}/duckdb-manager.js +0 -0
- /package/{src/duckdb-singleton.js → duckdb-singleton.js} +0 -0
- /package/{src/file-manager → file-manager}/file-manager.js +0 -0
- /package/{src/index.js → index.js} +0 -0
- /package/{src/node-sql-to-serialization.js → node-sql-to-serialization.js} +0 -0
- /package/{src/utils → utils}/duckdb-type-convertor.js +0 -0
- /package/{src/utils → utils}/hash-string.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../meerkat-node/src/__tests__/test-data.ts"],"sourcesContent":["export const CREATE_TEST_TABLE = `\nCREATE TABLE orders (\n order_id INTEGER,\n customer_id VARCHAR,\n product_id VARCHAR,\n order_date DATE,\n order_amount FLOAT,\n vendors VARCHAR[]\n);\n`;\n\nexport const INPUT_DATA_QUERY = `\nINSERT INTO orders VALUES\n(1, '1', '1', '2022-01-01', 50, ['myntra', 'amazon', 'flipkart']),\n(2, '1', '2', '2022-01-02', 80, ['myntra']),\n(3, '2', '3', '2022-02-01', 25, []),\n(4, '2', '1', '2022-03-01', 75, ['flipkart']),\n(5, '3', '1', '2022-03-02', 100, ['myntra', 'amazon', 'flipkart']),\n(6, '4', '2', '2022-04-01', 45, []),\n(7, '4', '3', '2022-05-01', 90, ['myntra', 'flipkart']),\n(8, '5', '1', '2022-05-02', 65, ['amazon', 'flipkart']),\n(9, '5', '2', '2022-05-05', 85, []),\n(10, '6', '3', '2022-06-01', 120, ['myntra', 'amazon']),\n(11, '6aa6', '3', '2024-06-01', 0, ['amazon']),\n(12, NULL, '3', '2024-07-01', 100, ['flipkart']);\n`;\n\nexport const TABLE_SCHEMA = {\n name: 'orders',\n sql: 'select * from orders',\n measures: [\n {\n name: 'order_amount',\n sql: 'order_amount',\n type: 'number',\n },\n {\n name: 'total_order_amount',\n sql: 'SUM(order_amount)',\n type: 'number',\n },\n ],\n dimensions: [\n {\n name: 'order_date',\n sql: 'order_date',\n type: 'time',\n },\n {\n name: 'order_id',\n sql: 'order_id',\n type: 'number',\n },\n {\n name: 'customer_id',\n sql: 'customer_id',\n type: 'string',\n },\n {\n name: 'product_id',\n sql: 'product_id',\n type: 'string',\n },\n {\n name: 'order_month',\n sql: `DATE_TRUNC('month', order_date)`,\n type: 'string',\n },\n {\n name: 'vendors',\n sql: 'vendors',\n type: 'string_array',\n }\n ],\n};\n\nexport const TEST_DATA = [\n {\n testName: 'GroupBySQLInnerQuery',\n expectedSQL: `SELECT SUM(order_amount) AS orders__total_order_amount , orders__order_month FROM (SELECT *, DATE_TRUNC('month', order_date) AS orders__order_month FROM (select * from orders) AS orders) AS orders GROUP BY orders__order_month LIMIT 1`,\n cubeInput: {\n measures: ['orders.total_order_amount'],\n filters: [],\n dimensions: ['orders.order_month'],\n limit: 1,\n },\n expectedOutput: [\n {\n orders__order_month: '2022-01-01T00:00:00.000Z',\n orders__total_order_amount: 130,\n },\n ],\n },\n {\n testName: 'GroupBy',\n expectedSQL: `SELECT SUM(order_amount) AS orders__total_order_amount , orders__customer_id FROM (SELECT *, customer_id AS orders__customer_id FROM (select * from orders) AS orders) AS orders GROUP BY orders__customer_id ORDER BY orders__total_order_amount ASC, orders__customer_id ASC`,\n cubeInput: {\n measures: ['orders.total_order_amount'],\n filters: [],\n dimensions: ['orders.customer_id'],\n order: {\n 'orders.total_order_amount': 'asc',\n 'orders.customer_id': 'asc',\n }\n },\n expectedOutput: [\n {\n \"orders__customer_id\": \"6aa6\",\n \"orders__total_order_amount\": 0,\n },\n {\n \"orders__customer_id\": \"2\",\n \"orders__total_order_amount\": 100,\n },\n {\n \"orders__customer_id\": \"3\",\n \"orders__total_order_amount\": 100,\n },\n {\n \"orders__customer_id\": null,\n \"orders__total_order_amount\": 100,\n },\n {\n \"orders__customer_id\": \"6\",\n \"orders__total_order_amount\": 120,\n },\n {\n \"orders__customer_id\": \"1\",\n \"orders__total_order_amount\": 130,\n },\n {\n \"orders__customer_id\": \"4\",\n \"orders__total_order_amount\": 135,\n },\n {\n \"orders__customer_id\": \"5\",\n \"orders__total_order_amount\": 150,\n },\n ]\n },\n {\n testName: 'Equals',\n expectedSQL: `SELECT orders.* FROM (SELECT *, customer_id AS orders__customer_id FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id = '1')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'equals',\n values: ['1'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n customer_id: '1',\n orders__customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n vendors: [\n \"myntra\",\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 2,\n customer_id: '1',\n orders__customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n vendors: [\n \"myntra\",\n ],\n },\n ],\n },\n {\n testName: 'NotEquals',\n expectedSQL: `SELECT orders.* FROM (SELECT *, customer_id AS orders__customer_id FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id != '1')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'notEquals',\n values: ['1'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n orders__customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n vendors: [],\n },\n {\n order_id: 4,\n customer_id: '2',\n orders__customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n \"vendors\": [\n \"flipkart\",\n ],\n },\n {\n order_id: 5,\n customer_id: '3',\n orders__customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n order_amount: 100.0,\n vendors: [\n \"myntra\",\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 6,\n customer_id: '4',\n orders__customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n order_amount: 45.0,\n vendors: [],\n },\n {\n order_id: 7,\n customer_id: '4',\n orders__customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n order_amount: 90.0,\n \"vendors\": [\n \"myntra\",\n \"flipkart\",\n ],\n },\n {\n order_id: 8,\n customer_id: '5',\n orders__customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n order_amount: 65.0,\n vendors: [\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 9,\n customer_id: '5',\n orders__customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n order_amount: 85.0,\n \"vendors\": [],\n },\n {\n order_id: 10,\n customer_id: '6',\n orders__customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120.0,\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n ],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n orders__customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n \"vendors\": [\n \"amazon\",\n ],\n },\n ],\n },\n {\n testName: 'Contains',\n expectedSQL: `SELECT orders.* FROM (SELECT *, customer_id AS orders__customer_id FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id ~~* '%aa%')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'contains',\n values: ['aa'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 11,\n customer_id: '6aa6',\n orders__customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n \"vendors\": [\"amazon\"],\n },\n ],\n },\n {\n testName: 'NotContains',\n expectedSQL: `SELECT orders.* FROM (SELECT *, customer_id AS orders__customer_id FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id !~~ '%1%') AND (orders__customer_id !~~ '%2%') AND (orders__customer_id !~~ '%3%') AND (orders__customer_id !~~ '%4%') AND (orders__customer_id !~~ '%5%') AND (orders__customer_id !~~ '%aa%'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['1'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['2'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['3'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['4'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['5'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['aa'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 10,\n customer_id: '6',\n orders__customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120,\n vendors: [\n \"myntra\",\n \"amazon\",\n ],\n },\n ],\n },\n {\n testName: 'GreaterThan',\n expectedSQL: `SELECT orders.* FROM (SELECT *, orders.order_amount AS orders__order_amount FROM (select * from orders) AS orders) AS orders WHERE (orders__order_amount > 50)`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_amount',\n operator: 'gt',\n values: ['50'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n orders__order_amount: 80.0,\n \"vendors\": [\n \"myntra\",\n ],\n },\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n orders__order_amount: 75.0,\n \"vendors\": [\n \"flipkart\",\n ],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n order_amount: 100.0,\n orders__order_amount: 100.0,\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n order_amount: 90.0,\n orders__order_amount: 90.0,\n \"vendors\": [\n \"myntra\",\n \"flipkart\",\n ],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n order_amount: 65.0,\n orders__order_amount: 65.0,\n \"vendors\": [\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n order_amount: 85.0,\n orders__order_amount: 85.0,\n \"vendors\": [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120.0,\n orders__order_amount: 120.0,\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n ],\n },\n {\n \"customer_id\": null,\n \"order_amount\": 100,\n \"order_date\": \"2024-07-01T00:00:00.000Z\",\n \"order_id\": 12,\n \"orders__order_amount\": 100,\n \"orders__order_date\": undefined,\n \"product_id\": \"3\",\n \"vendors\": [\n \"flipkart\",\n ],\n }\n ],\n },\n {\n testName: 'LessThan',\n expectedSQL: `SELECT orders.* FROM (SELECT *, orders.order_amount AS orders__order_amount FROM (select * from orders) AS orders) AS orders WHERE (orders__order_amount < 50)`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_amount',\n operator: 'lt',\n values: ['50'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n orders__order_amount: 25.0,\n \"vendors\": [],\n },\n {\n order_id: 6,\n customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n order_amount: 45.0,\n orders__order_amount: 45.0,\n \"vendors\": [],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n orders__order_amount: 0.0,\n \"vendors\": [\n \"amazon\",\n ],\n },\n ],\n },\n {\n testName: 'InDateRange',\n expectedSQL: `SELECT orders.* FROM (SELECT *, order_date AS orders__order_date FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_date >= '2022-02-01') AND (orders__order_date <= '2022-03-31'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_date',\n operator: 'inDateRange',\n values: ['2022-02-01', '2022-03-31'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n orders__order_date: '2022-02-01',\n order_amount: 25.0,\n \"vendors\": [],\n },\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n orders__order_date: '2022-03-01',\n order_amount: 75.0,\n \"vendors\": [\n \"flipkart\",\n ],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n orders__order_date: '2022-03-02',\n order_amount: 100.0,\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n \"flipkart\",\n ],\n },\n ],\n },\n {\n testName: 'NotInDateRange',\n expectedSQL: `SELECT orders.* FROM (SELECT *, order_date AS orders__order_date FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_date < '2022-02-01') OR (orders__order_date > '2022-03-31'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_date',\n operator: 'notInDateRange',\n values: ['2022-02-01', '2022-03-31'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n orders__order_date: '2022-01-01',\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n orders__order_date: '2022-01-02',\n \"vendors\": [\n \"myntra\",\n ],\n },\n {\n order_id: 6,\n customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n orders__order_date: '2022-04-01',\n order_amount: 45.0,\n \"vendors\": [],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n orders__order_date: '2022-05-01',\n order_amount: 90.0,\n \"vendors\": [\n \"myntra\",\n \"flipkart\",\n ],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n orders__order_date: '2022-05-02',\n order_amount: 65.0,\n \"vendors\": [\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n orders__order_date: '2022-05-05',\n order_amount: 85.0,\n \"vendors\": [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n orders__order_date: '2022-06-01',\n order_amount: 120.0,\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n ],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n orders__order_date: '2024-06-01',\n order_amount: 0.0,\n \"vendors\": [\n \"amazon\",\n ],\n },\n {\n \"customer_id\": null,\n \"order_amount\": 100,\n \"order_date\": \"2024-07-01T00:00:00.000Z\",\n \"order_id\": 12,\n \"orders__order_date\": \"2024-07-01T00:00:00.000Z\",\n \"product_id\": \"3\",\n \"vendors\": [\n \"flipkart\",\n ],\n }\n ],\n },\n // {\n // testName: 'Or',\n // expectedSQL: `SELECT orders.* FROM (select * from orders) AS orders WHERE ((orders.order_amount > 80) OR ((orders.order_date >= '2022-02-01') AND (orders.order_date <= '2022-03-01')))`,\n // cubeInput: {\n // measures: ['*'],\n // filters: [\n // {\n // or: [\n // {\n // member: 'orders.order_amount',\n // operator: 'gt',\n // values: ['80'],\n // },\n // {\n // member: 'orders.order_date',\n // operator: 'inDateRange',\n // values: ['2022-02-01', '2022-03-01'],\n // },\n // ],\n // },\n // ],\n // dimensions: [],\n // },\n // expectedOutput: [\n // {\n // order_id: 3,\n // customer_id: '2',\n // product_id: '3',\n // order_date: '2022-02-01',\n // order_amount: 25.0,\n // },\n // {\n // order_id: 4,\n // customer_id: '2',\n // product_id: '1',\n // order_date: '2022-03-01',\n // order_amount: 75.0,\n // },\n // {\n // order_id: 5,\n // customer_id: '3',\n // product_id: '1',\n // order_date: '2022-03-02',\n // order_amount: 100.0,\n // },\n // {\n // order_id: 7,\n // customer_id: '4',\n // product_id: '3',\n // order_date: '2022-05-01',\n // order_amount: 90.0,\n // },\n // {\n // order_id: 9,\n // customer_id: '5',\n // product_id: '2',\n // order_date: '2022-05-05',\n // order_amount: 85.0,\n // },\n // {\n // order_id: 10,\n // customer_id: '6',\n // product_id: '3',\n // order_date: '2022-06-01',\n // order_amount: 120.0,\n // },\n // ],\n // },\n {\n testName: 'And',\n expectedSQL: `SELECT orders.* FROM (SELECT *, orders.order_amount AS orders__order_amount, order_date AS orders__order_date FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_amount > 50) AND ((orders__order_date >= '2022-02-01') AND (orders__order_date <= '2022-06-01')))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.order_amount',\n operator: 'gt',\n values: ['50'],\n },\n {\n member: 'orders.order_date',\n operator: 'inDateRange',\n values: ['2022-02-01', '2022-06-01'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n orders__order_amount: 75.0,\n orders__order_date: '2022-03-01',\n \"vendors\": [\n \"flipkart\",\n ],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n orders__order_date: '2022-03-02',\n order_amount: 100.0,\n orders__order_amount: 100.0,\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n orders__order_date: '2022-05-01',\n order_amount: 90.0,\n orders__order_amount: 90.0,\n \"vendors\": [\n \"myntra\",\n \"flipkart\",\n ],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n orders__order_date: '2022-05-02',\n order_amount: 65,\n orders__order_amount: 65,\n \"vendors\": [\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n orders__order_date: '2022-05-05',\n order_amount: 85.0,\n orders__order_amount: 85.0,\n \"vendors\": [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n orders__order_date: '2022-06-01',\n order_amount: 120.0,\n orders__order_amount: 120.0,\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n ],\n },\n ],\n },\n {\n testName: 'Set',\n expectedSQL: `SELECT orders.* FROM (SELECT *, orders.order_amount AS orders__order_amount, product_id AS orders__product_id FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_amount IS NOT NULL) AND (orders__product_id = '3'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.order_amount',\n operator: 'set',\n },\n {\n member: 'orders.product_id',\n operator: 'equals',\n values: ['3']\n }\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n \"customer_id\": \"2\",\n \"order_amount\": 25,\n \"order_date\": \"2022-02-01T00:00:00.000Z\",\n \"order_id\": 3,\n \"orders__order_amount\": 25,\n \"orders__order_date\": undefined,\n \"orders__product_id\": \"3\",\n \"product_id\": \"3\",\n \"vendors\": [],\n },\n {\n \"customer_id\": \"4\",\n \"order_amount\": 90,\n \"order_date\": \"2022-05-01T00:00:00.000Z\",\n \"order_id\": 7,\n \"orders__order_amount\": 90,\n \"orders__order_date\": undefined,\n \"orders__product_id\": \"3\",\n \"product_id\": \"3\",\n \"vendors\": [\n \"myntra\",\n \"flipkart\",\n ],\n },\n {\n \"customer_id\": \"6\",\n \"order_amount\": 120,\n \"order_date\": \"2022-06-01T00:00:00.000Z\",\n \"order_id\": 10,\n \"orders__order_amount\": 120,\n \"orders__order_date\": undefined,\n \"orders__product_id\": \"3\",\n \"product_id\": \"3\",\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n ],\n },\n {\n \"customer_id\": \"6aa6\",\n \"order_amount\": 0,\n \"order_date\": \"2024-06-01T00:00:00.000Z\",\n \"order_id\": 11,\n \"orders__order_amount\": 0,\n \"orders__order_date\": undefined,\n \"orders__product_id\": \"3\",\n \"product_id\": \"3\",\n \"vendors\": [\n \"amazon\",\n ],\n },\n {\n \"customer_id\": null,\n \"order_amount\": 100,\n \"order_date\": \"2024-07-01T00:00:00.000Z\",\n \"order_id\": 12,\n \"orders__order_amount\": 100,\n \"orders__order_date\": undefined,\n \"orders__product_id\": \"3\",\n \"product_id\": \"3\",\n \"vendors\": [\n \"flipkart\",\n ],\n },\n ],\n },\n {\n testName: 'Not Set',\n expectedSQL: `SELECT orders.* FROM (SELECT *, customer_id AS orders__customer_id, product_id AS orders__product_id FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id IS NULL) AND (orders__product_id = '3'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notSet',\n },\n {\n member: 'orders.product_id',\n operator: 'equals',\n values: ['3']\n }\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n \"orders__customer_id\": null,\n \"customer_id\": null,\n \"order_amount\": 100,\n \"order_date\": \"2024-07-01T00:00:00.000Z\",\n \"order_id\": 12,\n \"orders__order_date\": undefined,\n \"orders__product_id\": \"3\",\n \"product_id\": \"3\",\n \"vendors\": [\"flipkart\"],\n }\n ],\n },\n {\n testName: 'In',\n expectedSQL: `SELECT orders.* FROM (SELECT *, customer_id AS orders__customer_id, vendors AS orders__vendors FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id IN ('1', '2')) AND (orders__vendors && (ARRAY['myntra', 'amazon'])))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'in',\n values: ['1', '2'],\n },\n {\n member: 'orders.vendors',\n operator: 'in',\n values: ['myntra', 'amazon'],\n }\n ]\n }\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: \"1\",\n order_amount: 50,\n order_date: \"2022-01-01T00:00:00.000Z\",\n order_id: 1,\n orders__customer_id: \"1\",\n orders__order_date: undefined,\n orders__vendors: [\n \"myntra\",\n \"amazon\",\n \"flipkart\",\n ],\n product_id: \"1\",\n vendors: [\n \"myntra\",\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n customer_id: \"1\",\n order_amount: 80,\n order_date: \"2022-01-02T00:00:00.000Z\",\n order_id: 2,\n orders__customer_id: \"1\",\n orders__order_date: undefined,\n orders__vendors: [\n \"myntra\",\n ],\n product_id: \"2\",\n vendors: [\n \"myntra\",\n ],\n },\n ],\n },\n {\n testName: 'Not In',\n expectedSQL: `SELECT orders.* FROM (SELECT *, customer_id AS orders__customer_id, vendors AS orders__vendors FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id NOT IN ('1', '2')) AND (NOT (orders__vendors && (ARRAY['myntra', 'flipkart']))))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notIn',\n values: ['1', '2'],\n },\n {\n member: 'orders.vendors',\n operator: 'notIn',\n values: ['myntra', 'flipkart'],\n }\n ]\n }\n ],\n dimensions: [],\n },\n expectedOutput:[\n {\n \"customer_id\": \"4\",\n \"order_amount\": 45,\n \"order_date\": \"2022-04-01T00:00:00.000Z\",\n \"order_id\": 6,\n \"orders__customer_id\": \"4\",\n \"orders__order_date\": undefined,\n \"orders__vendors\": [],\n \"product_id\": \"2\",\n \"vendors\": [],\n },\n {\n \"customer_id\": \"5\",\n \"order_amount\": 85,\n \"order_date\": \"2022-05-05T00:00:00.000Z\",\n \"order_id\": 9,\n \"orders__customer_id\": \"5\",\n \"orders__order_date\": undefined,\n \"orders__vendors\": [],\n \"product_id\": \"2\",\n \"vendors\": [],\n },\n {\n \"customer_id\": \"6aa6\",\n \"order_amount\": 0,\n \"order_date\": \"2024-06-01T00:00:00.000Z\",\n \"order_id\": 11,\n \"orders__customer_id\": \"6aa6\",\n \"orders__order_date\": undefined,\n \"orders__vendors\": [\n \"amazon\",\n ],\n \"product_id\": \"3\",\n \"vendors\": [\n \"amazon\",\n ],\n },\n ],\n },\n];\n"],"names":["CREATE_TEST_TABLE","INPUT_DATA_QUERY","TABLE_SCHEMA","TEST_DATA","name","sql","measures","type","dimensions","testName","expectedSQL","cubeInput","filters","limit","expectedOutput","orders__order_month","orders__total_order_amount","order","member","operator","values","order_id","customer_id","orders__customer_id","product_id","order_date","order_amount","vendors","and","orders__order_amount","undefined","orders__order_date","orders__vendors"],"mappings":"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f;wBACA;4BACEF,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;6BAAI;wBACf;wBACA;4BACEF,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;6BAAK;wBAChB;qBACD;gBACH;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACEO,UAAU;gBACVC,aAAa;gBACbC,qBAAqB;gBACrBC,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdC,SAAU;oBACR;oBACA;iBACD;YACH;SACD;IACH;IACA;QACElB,UAAU;QACVC,aAAa,CAAC,8JAA8J,CAAC;QAC7KC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEM,QAAQ;oBACRC,UAAU;oBACVC,QAAQ;wBAAC;qBAAK;gBAChB;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACEO,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAY;oBACV;iBACD;YACH;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAY;oBACV;iBACD;YACH;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAW;oBACT;oBACA;oBACA;iBACD;YACH;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAW,EAAE;YACf;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAY;oBACV;oBACA;iBACD;YACH;YACA;gBACE,eAAe;gBACf,gBAAgB;gBAChB,cAAc;gBACd,YAAY;gBACZ,wBAAwB;gBACxB,sBAAsBC;gBACtB,cAAc;gBACd,WAAW;oBACT;iBACD;YACH;SACD;IACH;IACA;QACErB,UAAU;QACVC,aAAa,CAAC,8JAA8J,CAAC;QAC7KC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEM,QAAQ;oBACRC,UAAU;oBACVC,QAAQ;wBAAC;qBAAK;gBAChB;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACEO,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAW,EAAE;YACf;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAW,EAAE;YACf;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAW;oBACT;iBACD;YACH;SACD;IACH;IACA;QACEpB,UAAU;QACVC,aAAa,CAAC,uMAAuM,CAAC;QACtNC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEM,QAAQ;oBACRC,UAAU;oBACVC,QAAQ;wBAAC;wBAAc;qBAAa;gBACtC;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACEO,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW,EAAE;YACf;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW;oBACT;iBACD;YACH;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW;oBACT;oBACA;oBACA;iBACD;YACH;SACD;IACH;IACA;QACEjB,UAAU;QACVC,aAAa,CAAC,oMAAoM,CAAC;QACnNC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEM,QAAQ;oBACRC,UAAU;oBACVC,QAAQ;wBAAC;wBAAc;qBAAa;gBACtC;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACEO,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdK,oBAAoB;gBACpB,WAAW;oBACT;oBACA;oBACA;iBACD;YACH;YACA;gBACEV,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdK,oBAAoB;gBACpB,WAAW;oBACT;iBACD;YACH;YACA;gBACEV,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW,EAAE;YACf;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW,EAAE;YACf;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW;oBACT;iBACD;YACH;YACA;gBACE,eAAe;gBACf,gBAAgB;gBAChB,cAAc;gBACd,YAAY;gBACZ,sBAAsB;gBACtB,cAAc;gBACd,WAAY;oBACV;iBACD;YACH;SACD;IACH;IACA,IAAI;IACJ,oBAAoB;IACpB,8LAA8L;IAC9L,iBAAiB;IACjB,uBAAuB;IACvB,iBAAiB;IACjB,UAAU;IACV,gBAAgB;IAChB,cAAc;IACd,6CAA6C;IAC7C,8BAA8B;IAC9B,8BAA8B;IAC9B,eAAe;IACf,cAAc;IACd,2CAA2C;IAC3C,uCAAuC;IACvC,oDAAoD;IACpD,eAAe;IACf,aAAa;IACb,WAAW;IACX,SAAS;IACT,sBAAsB;IACtB,OAAO;IACP,sBAAsB;IACtB,QAAQ;IACR,qBAAqB;IACrB,0BAA0B;IAC1B,yBAAyB;IACzB,kCAAkC;IAClC,4BAA4B;IAC5B,SAAS;IACT,QAAQ;IACR,qBAAqB;IACrB,0BAA0B;IAC1B,yBAAyB;IACzB,kCAAkC;IAClC,4BAA4B;IAC5B,SAAS;IACT,QAAQ;IACR,qBAAqB;IACrB,0BAA0B;IAC1B,yBAAyB;IACzB,kCAAkC;IAClC,6BAA6B;IAC7B,SAAS;IACT,QAAQ;IACR,qBAAqB;IACrB,0BAA0B;IAC1B,yBAAyB;IACzB,kCAAkC;IAClC,4BAA4B;IAC5B,SAAS;IACT,QAAQ;IACR,qBAAqB;IACrB,0BAA0B;IAC1B,yBAAyB;IACzB,kCAAkC;IAClC,4BAA4B;IAC5B,SAAS;IACT,QAAQ;IACR,sBAAsB;IACtB,0BAA0B;IAC1B,yBAAyB;IACzB,kCAAkC;IAClC,6BAA6B;IAC7B,SAAS;IACT,OAAO;IACP,KAAK;IACL;QACEjB,UAAU;QACVC,aAAa,CAAC,sRAAsR,CAAC;QACrSC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEgB,KAAK;wBACH;4BACEV,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;6BAAK;wBAChB;wBACA;4BACEF,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;gCAAc;6BAAa;wBACtC;qBACD;gBACH;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACEO,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtBE,oBAAoB;gBACpB,WAAW;oBACT;iBACD;YACH;YACA;gBACEV,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACdG,sBAAsB;gBACtB,WAAY;oBACV;oBACA;oBACA;iBACD;YACH;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACdG,sBAAsB;gBACtB,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACdG,sBAAsB;gBACtB,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACdG,sBAAsB;gBACtB,WAAW,EAAE;YACf;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACdG,sBAAsB;gBACtB,WAAY;oBACV;oBACA;iBACD;YACH;SACD;IACH;IACA;QACEpB,UAAU;QACVC,aAAa,CAAC,wOAAwO,CAAC;QACvPC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEgB,KAAK;wBACH;4BACEV,QAAQ;4BACRC,UAAU;wBACZ;wBACA;4BACED,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;6BAAI;wBACf;qBACH;gBACD;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACE,eAAe;gBACf,gBAAgB;gBAChB,cAAc;gBACd,YAAY;gBACZ,wBAAwB;gBACxB,sBAAsBgB;gBACtB,sBAAsB;gBACtB,cAAc;gBACd,WAAW,EAAE;YACf;YACA;gBACE,eAAe;gBACf,gBAAgB;gBAChB,cAAc;gBACd,YAAY;gBACZ,wBAAwB;gBACxB,sBAAsBA;gBACtB,sBAAsB;gBACtB,cAAc;gBACd,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACE,eAAe;gBACf,gBAAgB;gBAChB,cAAc;gBACd,YAAY;gBACZ,wBAAwB;gBACxB,sBAAsBA;gBACtB,sBAAsB;gBACtB,cAAc;gBACd,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACE,eAAe;gBACf,gBAAgB;gBAChB,cAAc;gBACd,YAAY;gBACZ,wBAAwB;gBACxB,sBAAsBA;gBACtB,sBAAsB;gBACtB,cAAc;gBACd,WAAW;oBACT;iBACD;YACH;YACA;gBACE,eAAe;gBACf,gBAAgB;gBAChB,cAAc;gBACd,YAAY;gBACZ,wBAAwB;gBACxB,sBAAsBA;gBACtB,sBAAsB;gBACtB,cAAc;gBACd,WAAW;oBACT;iBACD;YACH;SACD;IACH;IACA;QACErB,UAAU;QACVC,aAAa,CAAC,0NAA0N,CAAC;QACzOC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEgB,KAAK;wBACH;4BACEV,QAAQ;4BACRC,UAAU;wBACZ;wBACA;4BACED,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;6BAAI;wBACf;qBACH;gBACD;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACE,uBAAuB;gBACvB,eAAe;gBACf,gBAAgB;gBAChB,cAAc;gBACd,YAAY;gBACZ,sBAAsBgB;gBACtB,sBAAsB;gBACtB,cAAc;gBACd,WAAY;oBAAC;iBAAW;YAC1B;SACD;IACH;IACA;QACErB,UAAU;QACVC,aAAa,CAAC,gPAAgP,CAAC;QAC/PC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEgB,KAAK;wBACH;4BACEV,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;gCAAK;6BAAI;wBACpB;wBACA;4BACEF,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;gCAAU;6BAAS;wBAC9B;qBACD;gBACH;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACEQ,aAAa;gBACbI,cAAc;gBACdD,YAAY;gBACZJ,UAAU;gBACVE,qBAAqB;gBACrBQ,oBAAoBD;gBACpBE,iBAAkB;oBAChB;oBACA;oBACA;iBACD;gBACDR,YAAY;gBACZG,SAAU;oBACR;oBACA;oBACA;iBACD;YACH;YACA;gBACEL,aAAa;gBACbI,cAAc;gBACdD,YAAY;gBACZJ,UAAU;gBACVE,qBAAqB;gBACrBQ,oBAAoBD;gBACpBE,iBAAkB;oBAChB;iBACD;gBACDR,YAAY;gBACZG,SAAU;oBACR;iBACD;YACH;SACD;IACH;IACA;QACElB,UAAU;QACVC,aAAa,CAAC,4PAA4P,CAAC;QAC3QC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEgB,KAAK;wBACH;4BACEV,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;gCAAK;6BAAI;wBACpB;wBACA;4BACEF,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;gCAAU;6BAAW;wBAChC;qBACD;gBACH;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAe;YACb;gBACG,eAAe;gBACf,gBAAgB;gBAChB,cAAc;gBACd,YAAY;gBACZ,uBAAuB;gBACvB,sBAAsBgB;gBACtB,mBAAoB,EAAE;gBACtB,cAAc;gBACd,WAAY,EAAE;YACjB;YACA;gBACE,eAAe;gBACf,gBAAgB;gBAChB,cAAc;gBACd,YAAY;gBACZ,uBAAuB;gBACvB,sBAAsBA;gBACtB,mBAAoB,EAAE;gBACtB,cAAc;gBACd,WAAY,EAAE;YAClB;YACE;gBACE,eAAe;gBACf,gBAAgB;gBAChB,cAAc;gBACd,YAAY;gBACZ,uBAAuB;gBACvB,sBAAsBA;gBACtB,mBAAoB;oBAClB;iBACD;gBACD,cAAc;gBACd,WAAY;oBACV;iBACD;YACH;SACD;IACH;CACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../meerkat-node/src/cube-to-sql/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 { duckdbExec } from '../duckdb-exec';\n\ninterface CubeQueryToSQLParams {\n query: Query;\n tableSchemas: TableSchema[];\n contextParams?: ContextParams;\n}\n\nexport const cubeQueryToSQL = async ({\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: duckdbExec,\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 queryOutput = (await duckdbExec(queryTemp)) as Record<string, string>[];\n const preBaseQuery = deserializeQuery(queryOutput);\n\n const filterParamsSQL = await getFilterParamsSQL({\n query,\n tableSchema: updatedTableSchema,\n getQueryOutput: duckdbExec,\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","query","tableSchemas","contextParams","updatedTableSchemas","Promise","all","map","schema","baseFilterParamsSQL","getFinalBaseSQL","tableSchema","getQueryOutput","duckdbExec","sql","updatedTableSchema","getCombinedTableSchema","ast","cubeToDuckdbAST","Error","queryTemp","astDeserializerQuery","queryOutput","preBaseQuery","deserializeQuery","filterParamsSQL","getFilterParamsSQL","filterParamQuery","applyFilterParamsToBaseSQL","baseQuery","detectApplyContextParamsToBaseSQL","replaceBaseTableName","replace","BASE_TABLE_NAME","name","measures","dimensions","finalQuery","applyProjectionToSQLQuery"],"mappings":";+BAuBaA;;;eAAAA;;;;6BATN;4BACoB;AAQpB,MAAMA,iBAAiB,OAAO,EACnCC,KAAK,EACLC,YAAY,EACZC,aAAa,EACQ;IACrB,MAAMC,sBAAqC,MAAMC,QAAQC,GAAG,CAC1DJ,aAAaK,GAAG,CAAC,OAAOC;QACtB,MAAMC,sBAAsB,MAAMC,IAAAA,4BAAe,EAAC;YAChDT;YACAU,aAAaH;YACbI,gBAAgBC,sBAAU;QAC5B;QACA,OAAO,eACFL;YACHM,KAAKL;;IAET;IAGF,MAAMM,qBAAqB,MAAMC,IAAAA,mCAAsB,EACrDZ,qBACAH;IAGF,MAAMgB,MAAMC,IAAAA,4BAAe,EAACjB,OAAOc;IACnC,IAAI,CAACE,KAAK;QACR,MAAM,IAAIE,MAAM;IAClB;IAEA,MAAMC,YAAYC,IAAAA,iCAAoB,EAACJ;IAEvC,MAAMK,cAAe,MAAMT,IAAAA,sBAAU,EAACO;IACtC,MAAMG,eAAeC,IAAAA,6BAAgB,EAACF;IAEtC,MAAMG,kBAAkB,MAAMC,IAAAA,+BAAkB,EAAC;QAC/CzB;QACAU,aAAaI;QACbH,gBAAgBC,sBAAU;IAC5B;IAEA,MAAMc,mBAAmBC,IAAAA,uCAA0B,EACjDb,mBAAmBD,GAAG,EACtBW;IAGF;;GAEC,GACD,MAAMI,YAAYC,IAAAA,8CAAiC,EACjDH,kBACAxB,iBAAiB,CAAC;IAGpB;;GAEC,GACD,MAAM4B,uBAAuBR,aAAaS,OAAO,CAC/CC,4BAAe,EACf,CAAC,CAAC,EAAEJ,UAAU,KAAK,EAAEd,mBAAmBmB,IAAI,CAAC,CAAC;IAGhD;;GAEC,GACD,MAAMC,WAAWlC,MAAMkC,QAAQ;IAC/B,MAAMC,aAAanC,MAAMmC,UAAU,IAAI,EAAE;IACzC,MAAMC,aAAaC,IAAAA,sCAAyB,EAC1CF,YACAD,UACApB,oBACAgB;IAGF,OAAOM;AACT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../meerkat-node/src/duckdb-exec.ts"],"sourcesContent":["import { DuckDBSingleton } from './duckdb-singleton';\n\nexport const duckdbExec = <T = unknown>(query: string): Promise<T> => {\n const db = DuckDBSingleton.getInstance();\n return new Promise((resolve, reject) => {\n db.all(query, (err, res) => {\n if (err) {\n reject(err);\n }\n resolve(res as T);\n });\n });\n};\n"],"names":["duckdbExec","query","db","DuckDBSingleton","getInstance","Promise","resolve","reject","all","err","res"],"mappings":";+BAEaA;;;eAAAA;;;iCAFmB;AAEzB,MAAMA,aAAa,CAAcC;IACtC,MAAMC,KAAKC,gCAAe,CAACC,WAAW;IACtC,OAAO,IAAIC,QAAQ,CAACC,SAASC;QAC3BL,GAAGM,GAAG,CAACP,OAAO,CAACQ,KAAKC;YAClB,IAAID,KAAK;gBACPF,OAAOE;YACT;YACAH,QAAQI;QACV;IACF;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../meerkat-node/src/duckdb-manager/duckdb-manager.ts"],"sourcesContent":["import { ColumnInfo, Connection, Database, TableData } from 'duckdb';\n\nimport { DuckDBSingleton } from '../duckdb-singleton';\nimport { convertTableDataToJSON } from '../utils/duckdb-type-convertor';\n\nexport class DuckDBManager {\n private db: Database | null = null;\n private connection: Connection | null = null;\n\n private initPromise: Promise<void>;\n\n constructor({\n onInitialize,\n }: {\n onInitialize?: (db: Database) => Promise<void>;\n }) {\n this.initPromise = this.initialize({ onInitialize });\n }\n\n /**\n * Initialize the DuckDB instance\n */\n private async initialize({\n onInitialize,\n }: {\n onInitialize?: (db: Database) => Promise<void>;\n }) {\n this.db = DuckDBSingleton.getInstance();\n\n await onInitialize?.(this.db);\n }\n\n /**\n * Get a DuckDB connection instance.\n */\n async getConnection() {\n // Ensure database is initialized before returning the connection\n await this.initPromise;\n\n if (!this.connection) {\n this.connection = this.db?.connect() ?? null;\n }\n\n return this.connection;\n }\n\n /**\n * Execute a query on the DuckDB connection.\n */\n async query(\n query: string\n ): Promise<{ columns: ColumnInfo[]; data: TableData }> {\n const connection = await this.getConnection();\n\n return new Promise((resolve, reject) => {\n connection?.prepare(query, (err, statement) => {\n if (err) {\n reject(new Error(`Query preparation failed: ${err.message}`));\n return;\n }\n\n const columns = statement.columns();\n\n statement.all((err, data) => {\n if (err) {\n reject(new Error(`Query execution failed: ${err.message}`));\n return;\n }\n\n const result = convertTableDataToJSON(data, columns);\n\n resolve({ columns, data: result });\n });\n });\n });\n }\n\n /**\n * Close the DuckDB connection and cleanup resources.\n */\n async close(): Promise<void> {\n if (this.connection) {\n this.connection.close();\n this.connection = null;\n }\n }\n}\n"],"names":["DuckDBManager","initialize","onInitialize","db","DuckDBSingleton","getInstance","getConnection","initPromise","connection","connect","query","Promise","resolve","reject","prepare","err","statement","Error","message","columns","all","data","result","convertTableDataToJSON","close","constructor"],"mappings":";+BAKaA;;;eAAAA;;;iCAHmB;qCACO;AAEhC,IAAA,AAAMA,gBAAN,MAAMA;IAcX;;GAEC,GACD,MAAcC,WAAW,EACvBC,YAAY,EAGb,EAAE;QACD,IAAI,CAACC,EAAE,GAAGC,gCAAe,CAACC,WAAW;QAErC,OAAMH,gCAAAA,aAAe,IAAI,CAACC,EAAE;IAC9B;IAEA;;GAEC,GACD,MAAMG,gBAAgB;QACpB,iEAAiE;QACjE,MAAM,IAAI,CAACC,WAAW;QAEtB,IAAI,CAAC,IAAI,CAACC,UAAU,EAAE;gBACF;gBAAA;YAAlB,IAAI,CAACA,UAAU,GAAG,CAAA,oBAAA,WAAA,IAAI,CAACL,EAAE,qBAAP,SAASM,OAAO,cAAhB,mBAAsB;QAC1C;QAEA,OAAO,IAAI,CAACD,UAAU;IACxB;IAEA;;GAEC,GACD,MAAME,MACJA,KAAa,EACwC;QACrD,MAAMF,aAAa,MAAM,IAAI,CAACF,aAAa;QAE3C,OAAO,IAAIK,QAAQ,CAACC,SAASC;YAC3BL,8BAAAA,WAAYM,OAAO,CAACJ,OAAO,CAACK,KAAKC;gBAC/B,IAAID,KAAK;oBACPF,OAAO,IAAII,MAAM,CAAC,0BAA0B,EAAEF,IAAIG,OAAO,CAAC,CAAC;oBAC3D;gBACF;gBAEA,MAAMC,UAAUH,UAAUG,OAAO;gBAEjCH,UAAUI,GAAG,CAAC,CAACL,KAAKM;oBAClB,IAAIN,KAAK;wBACPF,OAAO,IAAII,MAAM,CAAC,wBAAwB,EAAEF,IAAIG,OAAO,CAAC,CAAC;wBACzD;oBACF;oBAEA,MAAMI,SAASC,IAAAA,2CAAsB,EAACF,MAAMF;oBAE5CP,QAAQ;wBAAEO;wBAASE,MAAMC;oBAAO;gBAClC;YACF;QACF;IACF;IAEA;;GAEC,GACD,MAAME,QAAuB;QAC3B,IAAI,IAAI,CAAChB,UAAU,EAAE;YACnB,IAAI,CAACA,UAAU,CAACgB,KAAK;YACrB,IAAI,CAAChB,UAAU,GAAG;QACpB;IACF;IA1EAiB,YAAY,EACVvB,YAAY,EAGb,CAAE;aATKC,KAAsB;aACtBK,aAAgC;QAStC,IAAI,CAACD,WAAW,GAAG,IAAI,CAACN,UAAU,CAAC;YAAEC;QAAa;IACpD;AAqEF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../meerkat-node/src/duckdb-singleton.ts"],"sourcesContent":["import { Database } from 'duckdb';\n\n/**\n * DuckDBSingleton is designed as a Singleton class, which ensures that only one Database connection exists across the entire application.\n * This reduces the overhead involved in establishing new connections for each database request.\n *\n * The `getInstance` method returns a DuckDB Database instance. If an instance doesn't already exist, it creates one.\n * Subsequent calls to `getInstance` will return the pre-existing instance, ensuring there is only a single connection to the DuckDB instance throughout the use of the application.\n *\n * Usage: let duckDbConnection = DuckDBSingleton.getInstance();\n *\n * Note: In case of in-memory database, `new Database(':memory:')` in getInstance method. In-memory databases are faster for read/write operations\n * but are not persistent; they lose data as soon as the program ends or the machine is turned off, which is okay for our use-case.\n */\nexport class DuckDBSingleton {\n private static instance: Database;\n\n private constructor() {\n // private to prevent direct instantiation.\n }\n\n static getInstance(): Database {\n if (!DuckDBSingleton.instance) {\n DuckDBSingleton.instance = new Database(':memory:');\n }\n return DuckDBSingleton.instance;\n }\n}\n"],"names":["DuckDBSingleton","getInstance","instance","Database"],"mappings":";+BAcaA;;;eAAAA;;;wBAdY;AAclB,IAAA,AAAMA,kBAAN,MAAMA;IAOX,OAAOC,cAAwB;QAC7B,IAAI,CAACD,gBAAgBE,QAAQ,EAAE;YAC7BF,gBAAgBE,QAAQ,GAAG,IAAIC,gBAAQ,CAAC;QAC1C;QACA,OAAOH,gBAAgBE,QAAQ;IACjC;IATA,aAAsB;IACpB,2CAA2C;IAC7C;AAQF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../meerkat-node/src/file-manager/file-manager.ts"],"sourcesContent":["import axios from 'axios';\nimport { createWriteStream, promises as fs } from 'fs';\nimport * as path from 'path';\n\nimport { hashString } from '../utils/hash-string';\n\nexport class FileManager {\n private readonly baseDir: string;\n\n constructor(config: { baseDir?: string }) {\n this.baseDir = config.baseDir ?? './data';\n fs.mkdir(this.baseDir, { recursive: true }).catch(console.error);\n }\n\n public getPath(tableName: string, fileName?: string): string {\n return fileName\n ? path.join(this.baseDir, tableName, fileName)\n : path.join(this.baseDir, tableName);\n }\n\n private getHashedFileName(fileName: string): string {\n return hashString(fileName);\n }\n\n /**\n * Write a file buffer to the file system.\n */\n async writeFileBuffer(file: {\n tableName: string;\n fileName: string;\n buffer: Uint8Array;\n }): Promise<void> {\n // Hash the file name to avoid file name length issues\n const hashedFileName = this.getHashedFileName(file.fileName);\n\n const filePath = this.getPath(file.tableName, hashedFileName);\n\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n\n await fs.writeFile(filePath, file.buffer);\n }\n\n /**\n * Get the file paths for a table.\n */\n async getTableFilePaths(tableName: string): Promise<string[]> {\n try {\n const files = await fs.readdir(this.getPath(tableName));\n\n return files.map((file) => this.getPath(tableName, file));\n } catch {\n return [];\n }\n }\n\n /**\n * Delete files from a table.\n */\n async deleteTableFiles(tableName: string, files: string[]): Promise<void> {\n await Promise.all(\n files.map(async (file) => {\n try {\n await fs.unlink(\n this.getPath(tableName, this.getHashedFileName(file))\n );\n } catch (err) {\n console.error(err);\n }\n })\n );\n }\n\n /**\n * Stream and register a file from a URL.\n */\n async streamAndRegisterFile({\n tableName,\n url,\n headers,\n fileName,\n }: {\n tableName: string;\n url: string;\n headers: Record<string, string>;\n fileName: string;\n }): Promise<void> {\n try {\n const response = await axios({\n headers: {\n ...headers,\n },\n method: 'get',\n responseType: 'stream',\n url,\n });\n\n const hashedFileName = hashString(fileName);\n\n const filePath = this.getPath(tableName, hashedFileName);\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n\n const writer = createWriteStream(filePath);\n\n return new Promise((resolve, reject) => {\n response.data.pipe(writer);\n writer.on('finish', () => {\n writer.close();\n resolve();\n });\n writer.on('error', (err) => {\n writer.close();\n reject(err);\n });\n });\n } catch (error) {\n console.error('Error streaming file:', error);\n throw error;\n }\n }\n}\n"],"names":["FileManager","getPath","tableName","fileName","path","join","baseDir","getHashedFileName","hashString","writeFileBuffer","file","hashedFileName","filePath","fs","mkdir","dirname","recursive","writeFile","buffer","getTableFilePaths","files","readdir","map","deleteTableFiles","Promise","all","unlink","err","console","error","streamAndRegisterFile","url","headers","response","axios","method","responseType","writer","createWriteStream","resolve","reject","data","pipe","on","close","constructor","config","catch"],"mappings":";+BAMaA;;;eAAAA;;;;uBANK;oBACgC;sBAC5B;4BAEK;AAEpB,IAAA,AAAMA,cAAN,MAAMA;IAQJC,QAAQC,SAAiB,EAAEC,QAAiB,EAAU;QAC3D,OAAOA,WACHC,MAAKC,IAAI,CAAC,IAAI,CAACC,OAAO,EAAEJ,WAAWC,YACnCC,MAAKC,IAAI,CAAC,IAAI,CAACC,OAAO,EAAEJ;IAC9B;IAEQK,kBAAkBJ,QAAgB,EAAU;QAClD,OAAOK,IAAAA,sBAAU,EAACL;IACpB;IAEA;;GAEC,GACD,MAAMM,gBAAgBC,IAIrB,EAAiB;QAChB,sDAAsD;QACtD,MAAMC,iBAAiB,IAAI,CAACJ,iBAAiB,CAACG,KAAKP,QAAQ;QAE3D,MAAMS,WAAW,IAAI,CAACX,OAAO,CAACS,KAAKR,SAAS,EAAES;QAE9C,MAAME,YAAE,CAACC,KAAK,CAACV,MAAKW,OAAO,CAACH,WAAW;YAAEI,WAAW;QAAK;QAEzD,MAAMH,YAAE,CAACI,SAAS,CAACL,UAAUF,KAAKQ,MAAM;IAC1C;IAEA;;GAEC,GACD,MAAMC,kBAAkBjB,SAAiB,EAAqB;QAC5D,IAAI;YACF,MAAMkB,QAAQ,MAAMP,YAAE,CAACQ,OAAO,CAAC,IAAI,CAACpB,OAAO,CAACC;YAE5C,OAAOkB,MAAME,GAAG,CAAC,CAACZ,OAAS,IAAI,CAACT,OAAO,CAACC,WAAWQ;QACrD,EAAE,UAAM;YACN,OAAO,EAAE;QACX;IACF;IAEA;;GAEC,GACD,MAAMa,iBAAiBrB,SAAiB,EAAEkB,KAAe,EAAiB;QACxE,MAAMI,QAAQC,GAAG,CACfL,MAAME,GAAG,CAAC,OAAOZ;YACf,IAAI;gBACF,MAAMG,YAAE,CAACa,MAAM,CACb,IAAI,CAACzB,OAAO,CAACC,WAAW,IAAI,CAACK,iBAAiB,CAACG;YAEnD,EAAE,OAAOiB,KAAK;gBACZC,QAAQC,KAAK,CAACF;YAChB;QACF;IAEJ;IAEA;;GAEC,GACD,MAAMG,sBAAsB,EAC1B5B,SAAS,EACT6B,GAAG,EACHC,OAAO,EACP7B,QAAQ,EAMT,EAAiB;QAChB,IAAI;YACF,MAAM8B,WAAW,MAAMC,IAAAA,cAAK,EAAC;gBAC3BF,SAAS,eACJA;gBAELG,QAAQ;gBACRC,cAAc;gBACdL;YACF;YAEA,MAAMpB,iBAAiBH,IAAAA,sBAAU,EAACL;YAElC,MAAMS,WAAW,IAAI,CAACX,OAAO,CAACC,WAAWS;YACzC,MAAME,YAAE,CAACC,KAAK,CAACV,MAAKW,OAAO,CAACH,WAAW;gBAAEI,WAAW;YAAK;YAEzD,MAAMqB,SAASC,IAAAA,qBAAiB,EAAC1B;YAEjC,OAAO,IAAIY,QAAQ,CAACe,SAASC;gBAC3BP,SAASQ,IAAI,CAACC,IAAI,CAACL;gBACnBA,OAAOM,EAAE,CAAC,UAAU;oBAClBN,OAAOO,KAAK;oBACZL;gBACF;gBACAF,OAAOM,EAAE,CAAC,SAAS,CAAChB;oBAClBU,OAAOO,KAAK;oBACZJ,OAAOb;gBACT;YACF;QACF,EAAE,OAAOE,OAAO;YACdD,QAAQC,KAAK,CAAC,yBAAyBA;YACvC,MAAMA;QACR;IACF;IA7GAgB,YAAYC,MAA4B,CAAE;YACzBA;QAAf,IAAI,CAACxC,OAAO,GAAGwC,CAAAA,kBAAAA,OAAOxC,OAAO,YAAdwC,kBAAkB;QACjCjC,YAAE,CAACC,KAAK,CAAC,IAAI,CAACR,OAAO,EAAE;YAAEU,WAAW;QAAK,GAAG+B,KAAK,CAACnB,QAAQC,KAAK;IACjE;AA2GF"}
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../meerkat-node/src/index.ts"],"sourcesContent":["export * from './cube-to-sql/cube-to-sql';\nexport * from './duckdb-singleton';\nexport * from './node-sql-to-serialization';\nexport { convertCubeStringToTableSchema };\nimport { convertCubeStringToTableSchema } from '@devrev/meerkat-core';\nexport * from './duckdb-manager/duckdb-manager';\nexport * from './file-manager/file-manager';\n"],"names":["convertCubeStringToTableSchema"],"mappings":";+BAGSA;;;eAAAA,2CAA8B;;;;uBAHzB;uBACA;uBACA;6BAEiC;uBACjC;uBACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../meerkat-node/src/node-sql-to-serialization.ts"],"sourcesContent":["import { SelectStatement } from '@devrev/meerkat-core';\nimport { duckdbExec } from './duckdb-exec';\n\nexport interface ParsedSerialization {\n [key: string]: {\n error: boolean;\n statements: SelectStatement[];\n };\n}\n\nexport const nodeSQLToSerialization = async (\n sql: string\n): Promise<ParsedSerialization> => {\n const queryOutput = await duckdbExec<\n {\n [key: string]: string;\n }[]\n >(sql);\n\n const parsedOutput: ParsedSerialization = {};\n\n for (const key in queryOutput[0]) {\n if (Object.prototype.hasOwnProperty.call(queryOutput[0], key)) {\n parsedOutput[key] = JSON.parse(queryOutput[0][key] as string) as {\n error: boolean;\n statements: SelectStatement[];\n };\n }\n }\n return parsedOutput;\n};\n"],"names":["nodeSQLToSerialization","sql","queryOutput","duckdbExec","parsedOutput","key","Object","prototype","hasOwnProperty","call","JSON","parse"],"mappings":";+BAUaA;;;eAAAA;;;4BATc;AASpB,MAAMA,yBAAyB,OACpCC;IAEA,MAAMC,cAAc,MAAMC,IAAAA,sBAAU,EAIlCF;IAEF,MAAMG,eAAoC,CAAC;IAE3C,IAAK,MAAMC,OAAOH,WAAW,CAAC,EAAE,CAAE;QAChC,IAAII,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACP,WAAW,CAAC,EAAE,EAAEG,MAAM;YAC7DD,YAAY,CAACC,IAAI,GAAGK,KAAKC,KAAK,CAACT,WAAW,CAAC,EAAE,CAACG,IAAI;QAIpD;IACF;IACA,OAAOD;AACT"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devrev/meerkat-node",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.93",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"@swc/helpers": "~0.5.0",
|
|
6
6
|
"@devrev/meerkat-core": "*",
|
|
7
|
-
"axios": "^1.
|
|
7
|
+
"axios": "^1.8.3",
|
|
8
8
|
"lodash": "^4.17.21",
|
|
9
|
-
"duckdb": "^1.
|
|
9
|
+
"duckdb": "^1.2.0"
|
|
10
10
|
},
|
|
11
11
|
"scripts": {
|
|
12
12
|
"release": "semantic-release"
|
|
@@ -30,5 +30,6 @@
|
|
|
30
30
|
},
|
|
31
31
|
"keywords": [],
|
|
32
32
|
"author": "devrev",
|
|
33
|
-
"license": "ISC"
|
|
34
|
-
|
|
33
|
+
"license": "ISC",
|
|
34
|
+
"types": "./src/index.d.ts"
|
|
35
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../meerkat-node/src/utils/duckdb-type-convertor.ts"],"sourcesContent":["import { ColumnInfo, ListTypeInfo, TableData, TypeInfo } from 'duckdb';\nimport { isNil } from 'lodash';\n\nexport const convertDuckDBValueToJS = (\n field: TypeInfo,\n value: unknown\n): unknown => {\n if (isNil(value)) return null;\n\n switch (field.id) {\n case 'SQL_NULL':\n return null;\n case 'DATE':\n case 'TIME':\n case 'TIMESTAMP':\n return new Date(value as string).toISOString();\n case 'FLOAT':\n case 'DOUBLE':\n return value;\n case 'INTEGER':\n case 'TINYINT':\n case 'SMALLINT':\n case 'BIGINT':\n case 'UTINYINT':\n case 'USMALLINT':\n case 'UINTEGER':\n case 'UBIGINT':\n case 'HUGEINT':\n case 'UHUGEINT':\n return parseInt((value as object).toString(), 10);\n case 'DECIMAL':\n return parseFloat((value as object).toString());\n case 'LIST': {\n if (!value) return [];\n const listValue = value as [];\n return listValue.map((item) =>\n convertDuckDBValueToJS((field as ListTypeInfo).child, item)\n );\n }\n default:\n return value;\n }\n};\n\nexport const convertTableDataToJSON = (\n data: TableData,\n columns: ColumnInfo[]\n): Record<string, unknown>[] => {\n return data.map((row: Record<string, unknown>) => {\n return columns.reduce((acc, column) => {\n acc[column.name] = convertDuckDBValueToJS(column.type, row[column.name]);\n return acc;\n }, {} as Record<string, unknown>);\n });\n};\n"],"names":["convertDuckDBValueToJS","convertTableDataToJSON","field","value","isNil","id","Date","toISOString","parseInt","toString","parseFloat","listValue","map","item","child","data","columns","row","reduce","acc","column","name","type"],"mappings":";;;;;;;;IAGaA,sBAAsB;eAAtBA;;IAyCAC,sBAAsB;eAAtBA;;;wBA3CS;AAEf,MAAMD,yBAAyB,CACpCE,OACAC;IAEA,IAAIC,IAAAA,aAAK,EAACD,QAAQ,OAAO;IAEzB,OAAQD,MAAMG,EAAE;QACd,KAAK;YACH,OAAO;QACT,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO,IAAIC,KAAKH,OAAiBI,WAAW;QAC9C,KAAK;QACL,KAAK;YACH,OAAOJ;QACT,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAOK,SAAS,AAACL,MAAiBM,QAAQ,IAAI;QAChD,KAAK;YACH,OAAOC,WAAW,AAACP,MAAiBM,QAAQ;QAC9C,KAAK;YAAQ;gBACX,IAAI,CAACN,OAAO,OAAO,EAAE;gBACrB,MAAMQ,YAAYR;gBAClB,OAAOQ,UAAUC,GAAG,CAAC,CAACC,OACpBb,uBAAuB,AAACE,MAAuBY,KAAK,EAAED;YAE1D;QACA;YACE,OAAOV;IACX;AACF;AAEO,MAAMF,yBAAyB,CACpCc,MACAC;IAEA,OAAOD,KAAKH,GAAG,CAAC,CAACK;QACf,OAAOD,QAAQE,MAAM,CAAC,CAACC,KAAKC;YAC1BD,GAAG,CAACC,OAAOC,IAAI,CAAC,GAAGrB,uBAAuBoB,OAAOE,IAAI,EAAEL,GAAG,CAACG,OAAOC,IAAI,CAAC;YACvE,OAAOF;QACT,GAAG,CAAC;IACN;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../meerkat-node/src/utils/hash-string.ts"],"sourcesContent":["import * as crypto from 'crypto';\n\n/**\n * Hash a string using MD5.\n */\nexport const hashString = (text: string): string => {\n return crypto.createHash('md5').update(text).digest('hex');\n};\n"],"names":["hashString","text","crypto","createHash","update","digest"],"mappings":";+BAKaA;;;eAAAA;;;wBALW;AAKjB,MAAMA,aAAa,CAACC;IACzB,OAAOC,QAAOC,UAAU,CAAC,OAAOC,MAAM,CAACH,MAAMI,MAAM,CAAC;AACtD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../meerkat-node/src/__tests__/test-data.ts"],"sourcesContent":["export const CREATE_TEST_TABLE = `\nCREATE TABLE orders (\n order_id INTEGER,\n customer_id VARCHAR,\n product_id VARCHAR,\n order_date DATE,\n order_amount FLOAT,\n vendors VARCHAR[]\n);\n`;\n\nexport const INPUT_DATA_QUERY = `\nINSERT INTO orders VALUES\n(1, '1', '1', '2022-01-01', 50, ['myntra', 'amazon', 'flipkart']),\n(2, '1', '2', '2022-01-02', 80, ['myntra']),\n(3, '2', '3', '2022-02-01', 25, []),\n(4, '2', '1', '2022-03-01', 75, ['flipkart']),\n(5, '3', '1', '2022-03-02', 100, ['myntra', 'amazon', 'flipkart']),\n(6, '4', '2', '2022-04-01', 45, []),\n(7, '4', '3', '2022-05-01', 90, ['myntra', 'flipkart']),\n(8, '5', '1', '2022-05-02', 65, ['amazon', 'flipkart']),\n(9, '5', '2', '2022-05-05', 85, []),\n(10, '6', '3', '2022-06-01', 120, ['myntra', 'amazon']),\n(11, '6aa6', '3', '2024-06-01', 0, ['amazon']),\n(12, NULL, '3', '2024-07-01', 100, ['flipkart']);\n`;\n\nexport const TABLE_SCHEMA = {\n name: 'orders',\n sql: 'select * from orders',\n measures: [\n {\n name: 'order_amount',\n sql: 'order_amount',\n type: 'number',\n },\n {\n name: 'total_order_amount',\n sql: 'SUM(order_amount)',\n type: 'number',\n },\n ],\n dimensions: [\n {\n name: 'order_date',\n sql: 'order_date',\n type: 'time',\n },\n {\n name: 'order_id',\n sql: 'order_id',\n type: 'number',\n },\n {\n name: 'customer_id',\n sql: 'customer_id',\n type: 'string',\n },\n {\n name: 'product_id',\n sql: 'product_id',\n type: 'string',\n },\n {\n name: 'order_month',\n sql: `DATE_TRUNC('month', order_date)`,\n type: 'string',\n },\n {\n name: 'vendors',\n sql: 'vendors',\n type: 'string_array',\n }\n ],\n};\n\nexport const TEST_DATA = [\n {\n testName: 'GroupBySQLInnerQuery',\n expectedSQL: `SELECT SUM(order_amount) AS orders__total_order_amount , orders__order_month FROM (SELECT *, DATE_TRUNC('month', order_date) AS orders__order_month FROM (select * from orders) AS orders) AS orders GROUP BY orders__order_month LIMIT 1`,\n cubeInput: {\n measures: ['orders.total_order_amount'],\n filters: [],\n dimensions: ['orders.order_month'],\n limit: 1,\n },\n expectedOutput: [\n {\n orders__order_month: '2022-01-01T00:00:00.000Z',\n orders__total_order_amount: 130,\n },\n ],\n },\n {\n testName: 'GroupBy',\n expectedSQL: `SELECT SUM(order_amount) AS orders__total_order_amount , orders__customer_id FROM (SELECT *, customer_id AS orders__customer_id FROM (select * from orders) AS orders) AS orders GROUP BY orders__customer_id ORDER BY orders__total_order_amount ASC, orders__customer_id ASC`,\n cubeInput: {\n measures: ['orders.total_order_amount'],\n filters: [],\n dimensions: ['orders.customer_id'],\n order: {\n 'orders.total_order_amount': 'asc',\n 'orders.customer_id': 'asc',\n }\n },\n expectedOutput: [\n {\n \"orders__customer_id\": \"6aa6\",\n \"orders__total_order_amount\": 0,\n },\n {\n \"orders__customer_id\": \"2\",\n \"orders__total_order_amount\": 100,\n },\n {\n \"orders__customer_id\": \"3\",\n \"orders__total_order_amount\": 100,\n },\n {\n \"orders__customer_id\": null,\n \"orders__total_order_amount\": 100,\n },\n {\n \"orders__customer_id\": \"6\",\n \"orders__total_order_amount\": 120,\n },\n {\n \"orders__customer_id\": \"1\",\n \"orders__total_order_amount\": 130,\n },\n {\n \"orders__customer_id\": \"4\",\n \"orders__total_order_amount\": 135,\n },\n {\n \"orders__customer_id\": \"5\",\n \"orders__total_order_amount\": 150,\n },\n ]\n },\n {\n testName: 'Equals',\n expectedSQL: `SELECT orders.* FROM (SELECT *, customer_id AS orders__customer_id FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id = '1')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'equals',\n values: ['1'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n customer_id: '1',\n orders__customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n vendors: [\n \"myntra\",\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 2,\n customer_id: '1',\n orders__customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n vendors: [\n \"myntra\",\n ],\n },\n ],\n },\n {\n testName: 'NotEquals',\n expectedSQL: `SELECT orders.* FROM (SELECT *, customer_id AS orders__customer_id FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id != '1')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'notEquals',\n values: ['1'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n orders__customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n vendors: [],\n },\n {\n order_id: 4,\n customer_id: '2',\n orders__customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n \"vendors\": [\n \"flipkart\",\n ],\n },\n {\n order_id: 5,\n customer_id: '3',\n orders__customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n order_amount: 100.0,\n vendors: [\n \"myntra\",\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 6,\n customer_id: '4',\n orders__customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n order_amount: 45.0,\n vendors: [],\n },\n {\n order_id: 7,\n customer_id: '4',\n orders__customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n order_amount: 90.0,\n \"vendors\": [\n \"myntra\",\n \"flipkart\",\n ],\n },\n {\n order_id: 8,\n customer_id: '5',\n orders__customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n order_amount: 65.0,\n vendors: [\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 9,\n customer_id: '5',\n orders__customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n order_amount: 85.0,\n \"vendors\": [],\n },\n {\n order_id: 10,\n customer_id: '6',\n orders__customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120.0,\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n ],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n orders__customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n \"vendors\": [\n \"amazon\",\n ],\n },\n ],\n },\n {\n testName: 'Contains',\n expectedSQL: `SELECT orders.* FROM (SELECT *, customer_id AS orders__customer_id FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id ~~* '%aa%')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'contains',\n values: ['aa'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 11,\n customer_id: '6aa6',\n orders__customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n \"vendors\": [\"amazon\"],\n },\n ],\n },\n {\n testName: 'NotContains',\n expectedSQL: `SELECT orders.* FROM (SELECT *, customer_id AS orders__customer_id FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id !~~ '%1%') AND (orders__customer_id !~~ '%2%') AND (orders__customer_id !~~ '%3%') AND (orders__customer_id !~~ '%4%') AND (orders__customer_id !~~ '%5%') AND (orders__customer_id !~~ '%aa%'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['1'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['2'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['3'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['4'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['5'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['aa'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 10,\n customer_id: '6',\n orders__customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120,\n vendors: [\n \"myntra\",\n \"amazon\",\n ],\n },\n ],\n },\n {\n testName: 'GreaterThan',\n expectedSQL: `SELECT orders.* FROM (SELECT *, orders.order_amount AS orders__order_amount FROM (select * from orders) AS orders) AS orders WHERE (orders__order_amount > 50)`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_amount',\n operator: 'gt',\n values: ['50'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n orders__order_amount: 80.0,\n \"vendors\": [\n \"myntra\",\n ],\n },\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n orders__order_amount: 75.0,\n \"vendors\": [\n \"flipkart\",\n ],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n order_amount: 100.0,\n orders__order_amount: 100.0,\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n order_amount: 90.0,\n orders__order_amount: 90.0,\n \"vendors\": [\n \"myntra\",\n \"flipkart\",\n ],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n order_amount: 65.0,\n orders__order_amount: 65.0,\n \"vendors\": [\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n order_amount: 85.0,\n orders__order_amount: 85.0,\n \"vendors\": [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120.0,\n orders__order_amount: 120.0,\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n ],\n },\n {\n \"customer_id\": null,\n \"order_amount\": 100,\n \"order_date\": \"2024-07-01T00:00:00.000Z\",\n \"order_id\": 12,\n \"orders__order_amount\": 100,\n \"orders__order_date\": undefined,\n \"product_id\": \"3\",\n \"vendors\": [\n \"flipkart\",\n ],\n }\n ],\n },\n {\n testName: 'LessThan',\n expectedSQL: `SELECT orders.* FROM (SELECT *, orders.order_amount AS orders__order_amount FROM (select * from orders) AS orders) AS orders WHERE (orders__order_amount < 50)`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_amount',\n operator: 'lt',\n values: ['50'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n orders__order_amount: 25.0,\n \"vendors\": [],\n },\n {\n order_id: 6,\n customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n order_amount: 45.0,\n orders__order_amount: 45.0,\n \"vendors\": [],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n orders__order_amount: 0.0,\n \"vendors\": [\n \"amazon\",\n ],\n },\n ],\n },\n {\n testName: 'InDateRange',\n expectedSQL: `SELECT orders.* FROM (SELECT *, order_date AS orders__order_date FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_date >= '2022-02-01') AND (orders__order_date <= '2022-03-31'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_date',\n operator: 'inDateRange',\n values: ['2022-02-01', '2022-03-31'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n orders__order_date: '2022-02-01',\n order_amount: 25.0,\n \"vendors\": [],\n },\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n orders__order_date: '2022-03-01',\n order_amount: 75.0,\n \"vendors\": [\n \"flipkart\",\n ],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n orders__order_date: '2022-03-02',\n order_amount: 100.0,\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n \"flipkart\",\n ],\n },\n ],\n },\n {\n testName: 'NotInDateRange',\n expectedSQL: `SELECT orders.* FROM (SELECT *, order_date AS orders__order_date FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_date < '2022-02-01') OR (orders__order_date > '2022-03-31'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_date',\n operator: 'notInDateRange',\n values: ['2022-02-01', '2022-03-31'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n orders__order_date: '2022-01-01',\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n orders__order_date: '2022-01-02',\n \"vendors\": [\n \"myntra\",\n ],\n },\n {\n order_id: 6,\n customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n orders__order_date: '2022-04-01',\n order_amount: 45.0,\n \"vendors\": [],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n orders__order_date: '2022-05-01',\n order_amount: 90.0,\n \"vendors\": [\n \"myntra\",\n \"flipkart\",\n ],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n orders__order_date: '2022-05-02',\n order_amount: 65.0,\n \"vendors\": [\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n orders__order_date: '2022-05-05',\n order_amount: 85.0,\n \"vendors\": [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n orders__order_date: '2022-06-01',\n order_amount: 120.0,\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n ],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n orders__order_date: '2024-06-01',\n order_amount: 0.0,\n \"vendors\": [\n \"amazon\",\n ],\n },\n {\n \"customer_id\": null,\n \"order_amount\": 100,\n \"order_date\": \"2024-07-01T00:00:00.000Z\",\n \"order_id\": 12,\n \"orders__order_date\": \"2024-07-01T00:00:00.000Z\",\n \"product_id\": \"3\",\n \"vendors\": [\n \"flipkart\",\n ],\n }\n ],\n },\n // {\n // testName: 'Or',\n // expectedSQL: `SELECT orders.* FROM (select * from orders) AS orders WHERE ((orders.order_amount > 80) OR ((orders.order_date >= '2022-02-01') AND (orders.order_date <= '2022-03-01')))`,\n // cubeInput: {\n // measures: ['*'],\n // filters: [\n // {\n // or: [\n // {\n // member: 'orders.order_amount',\n // operator: 'gt',\n // values: ['80'],\n // },\n // {\n // member: 'orders.order_date',\n // operator: 'inDateRange',\n // values: ['2022-02-01', '2022-03-01'],\n // },\n // ],\n // },\n // ],\n // dimensions: [],\n // },\n // expectedOutput: [\n // {\n // order_id: 3,\n // customer_id: '2',\n // product_id: '3',\n // order_date: '2022-02-01',\n // order_amount: 25.0,\n // },\n // {\n // order_id: 4,\n // customer_id: '2',\n // product_id: '1',\n // order_date: '2022-03-01',\n // order_amount: 75.0,\n // },\n // {\n // order_id: 5,\n // customer_id: '3',\n // product_id: '1',\n // order_date: '2022-03-02',\n // order_amount: 100.0,\n // },\n // {\n // order_id: 7,\n // customer_id: '4',\n // product_id: '3',\n // order_date: '2022-05-01',\n // order_amount: 90.0,\n // },\n // {\n // order_id: 9,\n // customer_id: '5',\n // product_id: '2',\n // order_date: '2022-05-05',\n // order_amount: 85.0,\n // },\n // {\n // order_id: 10,\n // customer_id: '6',\n // product_id: '3',\n // order_date: '2022-06-01',\n // order_amount: 120.0,\n // },\n // ],\n // },\n {\n testName: 'And',\n expectedSQL: `SELECT orders.* FROM (SELECT *, orders.order_amount AS orders__order_amount, order_date AS orders__order_date FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_amount > 50) AND ((orders__order_date >= '2022-02-01') AND (orders__order_date <= '2022-06-01')))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.order_amount',\n operator: 'gt',\n values: ['50'],\n },\n {\n member: 'orders.order_date',\n operator: 'inDateRange',\n values: ['2022-02-01', '2022-06-01'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n orders__order_amount: 75.0,\n orders__order_date: '2022-03-01',\n \"vendors\": [\n \"flipkart\",\n ],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n orders__order_date: '2022-03-02',\n order_amount: 100.0,\n orders__order_amount: 100.0,\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n orders__order_date: '2022-05-01',\n order_amount: 90.0,\n orders__order_amount: 90.0,\n \"vendors\": [\n \"myntra\",\n \"flipkart\",\n ],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n orders__order_date: '2022-05-02',\n order_amount: 65,\n orders__order_amount: 65,\n \"vendors\": [\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n orders__order_date: '2022-05-05',\n order_amount: 85.0,\n orders__order_amount: 85.0,\n \"vendors\": [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n orders__order_date: '2022-06-01',\n order_amount: 120.0,\n orders__order_amount: 120.0,\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n ],\n },\n ],\n },\n {\n testName: 'Set',\n expectedSQL: `SELECT orders.* FROM (SELECT *, orders.order_amount AS orders__order_amount, product_id AS orders__product_id FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_amount IS NOT NULL) AND (orders__product_id = '3'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.order_amount',\n operator: 'set',\n },\n {\n member: 'orders.product_id',\n operator: 'equals',\n values: ['3']\n }\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n \"customer_id\": \"2\",\n \"order_amount\": 25,\n \"order_date\": \"2022-02-01T00:00:00.000Z\",\n \"order_id\": 3,\n \"orders__order_amount\": 25,\n \"orders__order_date\": undefined,\n \"orders__product_id\": \"3\",\n \"product_id\": \"3\",\n \"vendors\": [],\n },\n {\n \"customer_id\": \"4\",\n \"order_amount\": 90,\n \"order_date\": \"2022-05-01T00:00:00.000Z\",\n \"order_id\": 7,\n \"orders__order_amount\": 90,\n \"orders__order_date\": undefined,\n \"orders__product_id\": \"3\",\n \"product_id\": \"3\",\n \"vendors\": [\n \"myntra\",\n \"flipkart\",\n ],\n },\n {\n \"customer_id\": \"6\",\n \"order_amount\": 120,\n \"order_date\": \"2022-06-01T00:00:00.000Z\",\n \"order_id\": 10,\n \"orders__order_amount\": 120,\n \"orders__order_date\": undefined,\n \"orders__product_id\": \"3\",\n \"product_id\": \"3\",\n \"vendors\": [\n \"myntra\",\n \"amazon\",\n ],\n },\n {\n \"customer_id\": \"6aa6\",\n \"order_amount\": 0,\n \"order_date\": \"2024-06-01T00:00:00.000Z\",\n \"order_id\": 11,\n \"orders__order_amount\": 0,\n \"orders__order_date\": undefined,\n \"orders__product_id\": \"3\",\n \"product_id\": \"3\",\n \"vendors\": [\n \"amazon\",\n ],\n },\n {\n \"customer_id\": null,\n \"order_amount\": 100,\n \"order_date\": \"2024-07-01T00:00:00.000Z\",\n \"order_id\": 12,\n \"orders__order_amount\": 100,\n \"orders__order_date\": undefined,\n \"orders__product_id\": \"3\",\n \"product_id\": \"3\",\n \"vendors\": [\n \"flipkart\",\n ],\n },\n ],\n },\n {\n testName: 'Not Set',\n expectedSQL: `SELECT orders.* FROM (SELECT *, customer_id AS orders__customer_id, product_id AS orders__product_id FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id IS NULL) AND (orders__product_id = '3'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notSet',\n },\n {\n member: 'orders.product_id',\n operator: 'equals',\n values: ['3']\n }\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n \"orders__customer_id\": null,\n \"customer_id\": null,\n \"order_amount\": 100,\n \"order_date\": \"2024-07-01T00:00:00.000Z\",\n \"order_id\": 12,\n \"orders__order_date\": undefined,\n \"orders__product_id\": \"3\",\n \"product_id\": \"3\",\n \"vendors\": [\"flipkart\"],\n }\n ],\n },\n {\n testName: 'In',\n expectedSQL: `SELECT orders.* FROM (SELECT *, customer_id AS orders__customer_id, vendors AS orders__vendors FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id IN ('1', '2')) AND (orders__vendors && (ARRAY['myntra', 'amazon'])))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'in',\n values: ['1', '2'],\n },\n {\n member: 'orders.vendors',\n operator: 'in',\n values: ['myntra', 'amazon'],\n }\n ]\n }\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: \"1\",\n order_amount: 50,\n order_date: \"2022-01-01T00:00:00.000Z\",\n order_id: 1,\n orders__customer_id: \"1\",\n orders__order_date: undefined,\n orders__vendors: [\n \"myntra\",\n \"amazon\",\n \"flipkart\",\n ],\n product_id: \"1\",\n vendors: [\n \"myntra\",\n \"amazon\",\n \"flipkart\",\n ],\n },\n {\n customer_id: \"1\",\n order_amount: 80,\n order_date: \"2022-01-02T00:00:00.000Z\",\n order_id: 2,\n orders__customer_id: \"1\",\n orders__order_date: undefined,\n orders__vendors: [\n \"myntra\",\n ],\n product_id: \"2\",\n vendors: [\n \"myntra\",\n ],\n },\n ],\n },\n {\n testName: 'Not In',\n expectedSQL: `SELECT orders.* FROM (SELECT *, customer_id AS orders__customer_id, vendors AS orders__vendors FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id NOT IN ('1', '2')) AND (NOT (orders__vendors && (ARRAY['myntra', 'flipkart']))))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notIn',\n values: ['1', '2'],\n },\n {\n member: 'orders.vendors',\n operator: 'notIn',\n values: ['myntra', 'flipkart'],\n }\n ]\n }\n ],\n dimensions: [],\n },\n expectedOutput:[\n {\n \"customer_id\": \"4\",\n \"order_amount\": 45,\n \"order_date\": \"2022-04-01T00:00:00.000Z\",\n \"order_id\": 6,\n \"orders__customer_id\": \"4\",\n \"orders__order_date\": undefined,\n \"orders__vendors\": [],\n \"product_id\": \"2\",\n \"vendors\": [],\n },\n {\n \"customer_id\": \"5\",\n \"order_amount\": 85,\n \"order_date\": \"2022-05-05T00:00:00.000Z\",\n \"order_id\": 9,\n \"orders__customer_id\": \"5\",\n \"orders__order_date\": undefined,\n \"orders__vendors\": [],\n \"product_id\": \"2\",\n \"vendors\": [],\n },\n {\n \"customer_id\": \"6aa6\",\n \"order_amount\": 0,\n \"order_date\": \"2024-06-01T00:00:00.000Z\",\n \"order_id\": 11,\n \"orders__customer_id\": \"6aa6\",\n \"orders__order_date\": undefined,\n \"orders__vendors\": [\n \"amazon\",\n ],\n \"product_id\": \"3\",\n \"vendors\": [\n \"amazon\",\n ],\n },\n ],\n },\n];\n"],"names":["CREATE_TEST_TABLE","INPUT_DATA_QUERY","TABLE_SCHEMA","TEST_DATA","name","sql","measures","type","dimensions","testName","expectedSQL","cubeInput","filters","limit","expectedOutput","orders__order_month","orders__total_order_amount","order","member","operator","values","order_id","customer_id","orders__customer_id","product_id","order_date","order_amount","vendors","and","orders__order_amount","undefined","orders__order_date","orders__vendors"],"mappings":"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f;wBACA;4BACEF,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;6BAAI;wBACf;wBACA;4BACEF,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;6BAAK;wBAChB;qBACD;gBACH;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACEO,UAAU;gBACVC,aAAa;gBACbC,qBAAqB;gBACrBC,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdC,SAAU;oBACR;oBACA;iBACD;YACH;SACD;IACH;IACA;QACElB,UAAU;QACVC,aAAa,CAAC,8JAA8J,CAAC;QAC7KC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEM,QAAQ;oBACRC,UAAU;oBACVC,QAAQ;wBAAC;qBAAK;gBAChB;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACEO,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAY;oBACV;iBACD;YACH;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAY;oBACV;iBACD;YACH;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAW;oBACT;oBACA;oBACA;iBACD;YACH;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAW,EAAE;YACf;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAY;oBACV;oBACA;iBACD;YACH;YACA;gBACE,eAAe;gBACf,gBAAgB;gBAChB,cAAc;gBACd,YAAY;gBACZ,wBAAwB;gBACxB,sBAAsBC;gBACtB,cAAc;gBACd,WAAW;oBACT;iBACD;YACH;SACD;IACH;IACA;QACErB,UAAU;QACVC,aAAa,CAAC,8JAA8J,CAAC;QAC7KC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEM,QAAQ;oBACRC,UAAU;oBACVC,QAAQ;wBAAC;qBAAK;gBAChB;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACEO,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAW,EAAE;YACf;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAW,EAAE;YACf;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtB,WAAW;oBACT;iBACD;YACH;SACD;IACH;IACA;QACEpB,UAAU;QACVC,aAAa,CAAC,uMAAuM,CAAC;QACtNC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEM,QAAQ;oBACRC,UAAU;oBACVC,QAAQ;wBAAC;wBAAc;qBAAa;gBACtC;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACEO,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW,EAAE;YACf;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW;oBACT;iBACD;YACH;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW;oBACT;oBACA;oBACA;iBACD;YACH;SACD;IACH;IACA;QACEjB,UAAU;QACVC,aAAa,CAAC,oMAAoM,CAAC;QACnNC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEM,QAAQ;oBACRC,UAAU;oBACVC,QAAQ;wBAAC;wBAAc;qBAAa;gBACtC;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACEO,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdK,oBAAoB;gBACpB,WAAW;oBACT;oBACA;oBACA;iBACD;YACH;YACA;gBACEV,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdK,oBAAoB;gBACpB,WAAW;oBACT;iBACD;YACH;YACA;gBACEV,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW,EAAE;YACf;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW,EAAE;YACf;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACd,WAAW;oBACT;iBACD;YACH;YACA;gBACE,eAAe;gBACf,gBAAgB;gBAChB,cAAc;gBACd,YAAY;gBACZ,sBAAsB;gBACtB,cAAc;gBACd,WAAY;oBACV;iBACD;YACH;SACD;IACH;IACA,IAAI;IACJ,oBAAoB;IACpB,8LAA8L;IAC9L,iBAAiB;IACjB,uBAAuB;IACvB,iBAAiB;IACjB,UAAU;IACV,gBAAgB;IAChB,cAAc;IACd,6CAA6C;IAC7C,8BAA8B;IAC9B,8BAA8B;IAC9B,eAAe;IACf,cAAc;IACd,2CAA2C;IAC3C,uCAAuC;IACvC,oDAAoD;IACpD,eAAe;IACf,aAAa;IACb,WAAW;IACX,SAAS;IACT,sBAAsB;IACtB,OAAO;IACP,sBAAsB;IACtB,QAAQ;IACR,qBAAqB;IACrB,0BAA0B;IAC1B,yBAAyB;IACzB,kCAAkC;IAClC,4BAA4B;IAC5B,SAAS;IACT,QAAQ;IACR,qBAAqB;IACrB,0BAA0B;IAC1B,yBAAyB;IACzB,kCAAkC;IAClC,4BAA4B;IAC5B,SAAS;IACT,QAAQ;IACR,qBAAqB;IACrB,0BAA0B;IAC1B,yBAAyB;IACzB,kCAAkC;IAClC,6BAA6B;IAC7B,SAAS;IACT,QAAQ;IACR,qBAAqB;IACrB,0BAA0B;IAC1B,yBAAyB;IACzB,kCAAkC;IAClC,4BAA4B;IAC5B,SAAS;IACT,QAAQ;IACR,qBAAqB;IACrB,0BAA0B;IAC1B,yBAAyB;IACzB,kCAAkC;IAClC,4BAA4B;IAC5B,SAAS;IACT,QAAQ;IACR,sBAAsB;IACtB,0BAA0B;IAC1B,yBAAyB;IACzB,kCAAkC;IAClC,6BAA6B;IAC7B,SAAS;IACT,OAAO;IACP,KAAK;IACL;QACEjB,UAAU;QACVC,aAAa,CAAC,sRAAsR,CAAC;QACrSC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEgB,KAAK;wBACH;4BACEV,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;6BAAK;wBAChB;wBACA;4BACEF,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;gCAAc;6BAAa;wBACtC;qBACD;gBACH;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACEO,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdG,sBAAsB;gBACtBE,oBAAoB;gBACpB,WAAW;oBACT;iBACD;YACH;YACA;gBACEV,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACdG,sBAAsB;gBACtB,WAAY;oBACV;oBACA;oBACA;iBACD;YACH;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACdG,sBAAsB;gBACtB,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACdG,sBAAsB;gBACtB,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACdG,sBAAsB;gBACtB,WAAW,EAAE;YACf;YACA;gBACER,UAAU;gBACVC,aAAa;gBACbE,YAAY;gBACZC,YAAY;gBACZM,oBAAoB;gBACpBL,cAAc;gBACdG,sBAAsB;gBACtB,WAAY;oBACV;oBACA;iBACD;YACH;SACD;IACH;IACA;QACEpB,UAAU;QACVC,aAAa,CAAC,wOAAwO,CAAC;QACvPC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEgB,KAAK;wBACH;4BACEV,QAAQ;4BACRC,UAAU;wBACZ;wBACA;4BACED,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;6BAAI;wBACf;qBACH;gBACD;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACE,eAAe;gBACf,gBAAgB;gBAChB,cAAc;gBACd,YAAY;gBACZ,wBAAwB;gBACxB,sBAAsBgB;gBACtB,sBAAsB;gBACtB,cAAc;gBACd,WAAW,EAAE;YACf;YACA;gBACE,eAAe;gBACf,gBAAgB;gBAChB,cAAc;gBACd,YAAY;gBACZ,wBAAwB;gBACxB,sBAAsBA;gBACtB,sBAAsB;gBACtB,cAA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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../meerkat-node/src/cube-to-sql/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 { duckdbExec } from '../duckdb-exec';\n\ninterface CubeQueryToSQLParams {\n query: Query;\n tableSchemas: TableSchema[];\n contextParams?: ContextParams;\n}\n\nexport const cubeQueryToSQL = async ({\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: duckdbExec,\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 queryOutput = (await duckdbExec(queryTemp)) as Record<string, string>[];\n const preBaseQuery = deserializeQuery(queryOutput);\n\n const filterParamsSQL = await getFilterParamsSQL({\n query,\n tableSchema: updatedTableSchema,\n getQueryOutput: duckdbExec,\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","query","tableSchemas","contextParams","updatedTableSchemas","Promise","all","map","schema","baseFilterParamsSQL","getFinalBaseSQL","tableSchema","getQueryOutput","duckdbExec","sql","updatedTableSchema","getCombinedTableSchema","ast","cubeToDuckdbAST","Error","queryTemp","astDeserializerQuery","queryOutput","preBaseQuery","deserializeQuery","filterParamsSQL","getFilterParamsSQL","filterParamQuery","applyFilterParamsToBaseSQL","baseQuery","detectApplyContextParamsToBaseSQL","replaceBaseTableName","replace","BASE_TABLE_NAME","name","measures","dimensions","finalQuery","applyProjectionToSQLQuery"],"mappings":";+BAuBaA;;;eAAAA;;;;6BATN;4BACoB;AAQpB,MAAMA,iBAAiB,OAAO,EACnCC,KAAK,EACLC,YAAY,EACZC,aAAa,EACQ;IACrB,MAAMC,sBAAqC,MAAMC,QAAQC,GAAG,CAC1DJ,aAAaK,GAAG,CAAC,OAAOC;QACtB,MAAMC,sBAAsB,MAAMC,IAAAA,4BAAe,EAAC;YAChDT;YACAU,aAAaH;YACbI,gBAAgBC,sBAAU;QAC5B;QACA,OAAO,eACFL;YACHM,KAAKL;;IAET;IAGF,MAAMM,qBAAqB,MAAMC,IAAAA,mCAAsB,EACrDZ,qBACAH;IAGF,MAAMgB,MAAMC,IAAAA,4BAAe,EAACjB,OAAOc;IACnC,IAAI,CAACE,KAAK;QACR,MAAM,IAAIE,MAAM;IAClB;IAEA,MAAMC,YAAYC,IAAAA,iCAAoB,EAACJ;IAEvC,MAAMK,cAAe,MAAMT,IAAAA,sBAAU,EAACO;IACtC,MAAMG,eAAeC,IAAAA,6BAAgB,EAACF;IAEtC,MAAMG,kBAAkB,MAAMC,IAAAA,+BAAkB,EAAC;QAC/CzB;QACAU,aAAaI;QACbH,gBAAgBC,sBAAU;IAC5B;IAEA,MAAMc,mBAAmBC,IAAAA,uCAA0B,EACjDb,mBAAmBD,GAAG,EACtBW;IAGF;;GAEC,GACD,MAAMI,YAAYC,IAAAA,8CAAiC,EACjDH,kBACAxB,iBAAiB,CAAC;IAGpB;;GAEC,GACD,MAAM4B,uBAAuBR,aAAaS,OAAO,CAC/CC,4BAAe,EACf,CAAC,CAAC,EAAEJ,UAAU,KAAK,EAAEd,mBAAmBmB,IAAI,CAAC,CAAC;IAGhD;;GAEC,GACD,MAAMC,WAAWlC,MAAMkC,QAAQ;IAC/B,MAAMC,aAAanC,MAAMmC,UAAU,IAAI,EAAE;IACzC,MAAMC,aAAaC,IAAAA,sCAAyB,EAC1CF,YACAD,UACApB,oBACAgB;IAGF,OAAOM;AACT"}
|
package/src/duckdb-exec.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../meerkat-node/src/duckdb-exec.ts"],"sourcesContent":["import { DuckDBSingleton } from './duckdb-singleton';\n\nexport const duckdbExec = <T = unknown>(query: string): Promise<T> => {\n const db = DuckDBSingleton.getInstance();\n return new Promise((resolve, reject) => {\n db.all(query, (err, res) => {\n if (err) {\n reject(err);\n }\n resolve(res as T);\n });\n });\n};\n"],"names":["duckdbExec","query","db","DuckDBSingleton","getInstance","Promise","resolve","reject","all","err","res"],"mappings":";+BAEaA;;;eAAAA;;;iCAFmB;AAEzB,MAAMA,aAAa,CAAcC;IACtC,MAAMC,KAAKC,gCAAe,CAACC,WAAW;IACtC,OAAO,IAAIC,QAAQ,CAACC,SAASC;QAC3BL,GAAGM,GAAG,CAACP,OAAO,CAACQ,KAAKC;YAClB,IAAID,KAAK;gBACPF,OAAOE;YACT;YACAH,QAAQI;QACV;IACF;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../meerkat-node/src/duckdb-manager/duckdb-manager.ts"],"sourcesContent":["import { ColumnInfo, Connection, Database, TableData } from 'duckdb';\n\nimport { DuckDBSingleton } from '../duckdb-singleton';\nimport { convertTableDataToJSON } from '../utils/duckdb-type-convertor';\n\nexport class DuckDBManager {\n private db: Database | null = null;\n private connection: Connection | null = null;\n\n private initPromise: Promise<void>;\n\n constructor({\n onInitialize,\n }: {\n onInitialize?: (db: Database) => Promise<void>;\n }) {\n this.initPromise = this.initialize({ onInitialize });\n }\n\n /**\n * Initialize the DuckDB instance\n */\n private async initialize({\n onInitialize,\n }: {\n onInitialize?: (db: Database) => Promise<void>;\n }) {\n this.db = DuckDBSingleton.getInstance();\n\n await onInitialize?.(this.db);\n }\n\n /**\n * Get a DuckDB connection instance.\n */\n async getConnection() {\n // Ensure database is initialized before returning the connection\n await this.initPromise;\n\n if (!this.connection) {\n this.connection = this.db?.connect() ?? null;\n }\n\n return this.connection;\n }\n\n /**\n * Execute a query on the DuckDB connection.\n */\n async query(\n query: string\n ): Promise<{ columns: ColumnInfo[]; data: TableData }> {\n const connection = await this.getConnection();\n\n return new Promise((resolve, reject) => {\n connection?.prepare(query, (err, statement) => {\n if (err) {\n reject(new Error(`Query preparation failed: ${err.message}`));\n return;\n }\n\n const columns = statement.columns();\n\n statement.all((err, data) => {\n if (err) {\n reject(new Error(`Query execution failed: ${err.message}`));\n return;\n }\n\n const result = convertTableDataToJSON(data, columns);\n\n resolve({ columns, data: result });\n });\n });\n });\n }\n\n /**\n * Close the DuckDB connection and cleanup resources.\n */\n async close(): Promise<void> {\n if (this.connection) {\n this.connection.close();\n this.connection = null;\n }\n }\n}\n"],"names":["DuckDBManager","initialize","onInitialize","db","DuckDBSingleton","getInstance","getConnection","initPromise","connection","connect","query","Promise","resolve","reject","prepare","err","statement","Error","message","columns","all","data","result","convertTableDataToJSON","close","constructor"],"mappings":";+BAKaA;;;eAAAA;;;iCAHmB;qCACO;AAEhC,IAAA,AAAMA,gBAAN,MAAMA;IAcX;;GAEC,GACD,MAAcC,WAAW,EACvBC,YAAY,EAGb,EAAE;QACD,IAAI,CAACC,EAAE,GAAGC,gCAAe,CAACC,WAAW;QAErC,OAAMH,gCAAAA,aAAe,IAAI,CAACC,EAAE;IAC9B;IAEA;;GAEC,GACD,MAAMG,gBAAgB;QACpB,iEAAiE;QACjE,MAAM,IAAI,CAACC,WAAW;QAEtB,IAAI,CAAC,IAAI,CAACC,UAAU,EAAE;gBACF;gBAAA;YAAlB,IAAI,CAACA,UAAU,GAAG,CAAA,oBAAA,WAAA,IAAI,CAACL,EAAE,qBAAP,SAASM,OAAO,cAAhB,mBAAsB;QAC1C;QAEA,OAAO,IAAI,CAACD,UAAU;IACxB;IAEA;;GAEC,GACD,MAAME,MACJA,KAAa,EACwC;QACrD,MAAMF,aAAa,MAAM,IAAI,CAACF,aAAa;QAE3C,OAAO,IAAIK,QAAQ,CAACC,SAASC;YAC3BL,8BAAAA,WAAYM,OAAO,CAACJ,OAAO,CAACK,KAAKC;gBAC/B,IAAID,KAAK;oBACPF,OAAO,IAAII,MAAM,CAAC,0BAA0B,EAAEF,IAAIG,OAAO,CAAC,CAAC;oBAC3D;gBACF;gBAEA,MAAMC,UAAUH,UAAUG,OAAO;gBAEjCH,UAAUI,GAAG,CAAC,CAACL,KAAKM;oBAClB,IAAIN,KAAK;wBACPF,OAAO,IAAII,MAAM,CAAC,wBAAwB,EAAEF,IAAIG,OAAO,CAAC,CAAC;wBACzD;oBACF;oBAEA,MAAMI,SAASC,IAAAA,2CAAsB,EAACF,MAAMF;oBAE5CP,QAAQ;wBAAEO;wBAASE,MAAMC;oBAAO;gBAClC;YACF;QACF;IACF;IAEA;;GAEC,GACD,MAAME,QAAuB;QAC3B,IAAI,IAAI,CAAChB,UAAU,EAAE;YACnB,IAAI,CAACA,UAAU,CAACgB,KAAK;YACrB,IAAI,CAAChB,UAAU,GAAG;QACpB;IACF;IA1EAiB,YAAY,EACVvB,YAAY,EAGb,CAAE;aATKC,KAAsB;aACtBK,aAAgC;QAStC,IAAI,CAACD,WAAW,GAAG,IAAI,CAACN,UAAU,CAAC;YAAEC;QAAa;IACpD;AAqEF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../meerkat-node/src/duckdb-singleton.ts"],"sourcesContent":["import { Database } from 'duckdb';\n\n/**\n * DuckDBSingleton is designed as a Singleton class, which ensures that only one Database connection exists across the entire application.\n * This reduces the overhead involved in establishing new connections for each database request.\n *\n * The `getInstance` method returns a DuckDB Database instance. If an instance doesn't already exist, it creates one.\n * Subsequent calls to `getInstance` will return the pre-existing instance, ensuring there is only a single connection to the DuckDB instance throughout the use of the application.\n *\n * Usage: let duckDbConnection = DuckDBSingleton.getInstance();\n *\n * Note: In case of in-memory database, `new Database(':memory:')` in getInstance method. In-memory databases are faster for read/write operations\n * but are not persistent; they lose data as soon as the program ends or the machine is turned off, which is okay for our use-case.\n */\nexport class DuckDBSingleton {\n private static instance: Database;\n\n private constructor() {\n // private to prevent direct instantiation.\n }\n\n static getInstance(): Database {\n if (!DuckDBSingleton.instance) {\n DuckDBSingleton.instance = new Database(':memory:');\n }\n return DuckDBSingleton.instance;\n }\n}\n"],"names":["DuckDBSingleton","getInstance","instance","Database"],"mappings":";+BAcaA;;;eAAAA;;;wBAdY;AAclB,IAAA,AAAMA,kBAAN,MAAMA;IAOX,OAAOC,cAAwB;QAC7B,IAAI,CAACD,gBAAgBE,QAAQ,EAAE;YAC7BF,gBAAgBE,QAAQ,GAAG,IAAIC,gBAAQ,CAAC;QAC1C;QACA,OAAOH,gBAAgBE,QAAQ;IACjC;IATA,aAAsB;IACpB,2CAA2C;IAC7C;AAQF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../meerkat-node/src/file-manager/file-manager.ts"],"sourcesContent":["import axios from 'axios';\nimport { createWriteStream, promises as fs } from 'fs';\nimport * as path from 'path';\n\nimport { hashString } from '../utils/hash-string';\n\nexport class FileManager {\n private readonly baseDir: string;\n\n constructor(config: { baseDir?: string }) {\n this.baseDir = config.baseDir ?? './data';\n fs.mkdir(this.baseDir, { recursive: true }).catch(console.error);\n }\n\n public getPath(tableName: string, fileName?: string): string {\n return fileName\n ? path.join(this.baseDir, tableName, fileName)\n : path.join(this.baseDir, tableName);\n }\n\n private getHashedFileName(fileName: string): string {\n return hashString(fileName);\n }\n\n /**\n * Write a file buffer to the file system.\n */\n async writeFileBuffer(file: {\n tableName: string;\n fileName: string;\n buffer: Uint8Array;\n }): Promise<void> {\n // Hash the file name to avoid file name length issues\n const hashedFileName = this.getHashedFileName(file.fileName);\n\n const filePath = this.getPath(file.tableName, hashedFileName);\n\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n\n await fs.writeFile(filePath, file.buffer);\n }\n\n /**\n * Get the file paths for a table.\n */\n async getTableFilePaths(tableName: string): Promise<string[]> {\n try {\n const files = await fs.readdir(this.getPath(tableName));\n\n return files.map((file) => this.getPath(tableName, file));\n } catch {\n return [];\n }\n }\n\n /**\n * Delete files from a table.\n */\n async deleteTableFiles(tableName: string, files: string[]): Promise<void> {\n await Promise.all(\n files.map(async (file) => {\n try {\n await fs.unlink(\n this.getPath(tableName, this.getHashedFileName(file))\n );\n } catch (err) {\n console.error(err);\n }\n })\n );\n }\n\n /**\n * Stream and register a file from a URL.\n */\n async streamAndRegisterFile({\n tableName,\n url,\n headers,\n fileName,\n }: {\n tableName: string;\n url: string;\n headers: Record<string, string>;\n fileName: string;\n }): Promise<void> {\n try {\n const response = await axios({\n headers: {\n ...headers,\n },\n method: 'get',\n responseType: 'stream',\n url,\n });\n\n const hashedFileName = hashString(fileName);\n\n const filePath = this.getPath(tableName, hashedFileName);\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n\n const writer = createWriteStream(filePath);\n\n return new Promise((resolve, reject) => {\n response.data.pipe(writer);\n writer.on('finish', () => {\n writer.close();\n resolve();\n });\n writer.on('error', (err) => {\n writer.close();\n reject(err);\n });\n });\n } catch (error) {\n console.error('Error streaming file:', error);\n throw error;\n }\n }\n}\n"],"names":["FileManager","getPath","tableName","fileName","path","join","baseDir","getHashedFileName","hashString","writeFileBuffer","file","hashedFileName","filePath","fs","mkdir","dirname","recursive","writeFile","buffer","getTableFilePaths","files","readdir","map","deleteTableFiles","Promise","all","unlink","err","console","error","streamAndRegisterFile","url","headers","response","axios","method","responseType","writer","createWriteStream","resolve","reject","data","pipe","on","close","constructor","config","catch"],"mappings":";+BAMaA;;;eAAAA;;;;uBANK;oBACgC;sBAC5B;4BAEK;AAEpB,IAAA,AAAMA,cAAN,MAAMA;IAQJC,QAAQC,SAAiB,EAAEC,QAAiB,EAAU;QAC3D,OAAOA,WACHC,MAAKC,IAAI,CAAC,IAAI,CAACC,OAAO,EAAEJ,WAAWC,YACnCC,MAAKC,IAAI,CAAC,IAAI,CAACC,OAAO,EAAEJ;IAC9B;IAEQK,kBAAkBJ,QAAgB,EAAU;QAClD,OAAOK,IAAAA,sBAAU,EAACL;IACpB;IAEA;;GAEC,GACD,MAAMM,gBAAgBC,IAIrB,EAAiB;QAChB,sDAAsD;QACtD,MAAMC,iBAAiB,IAAI,CAACJ,iBAAiB,CAACG,KAAKP,QAAQ;QAE3D,MAAMS,WAAW,IAAI,CAACX,OAAO,CAACS,KAAKR,SAAS,EAAES;QAE9C,MAAME,YAAE,CAACC,KAAK,CAACV,MAAKW,OAAO,CAACH,WAAW;YAAEI,WAAW;QAAK;QAEzD,MAAMH,YAAE,CAACI,SAAS,CAACL,UAAUF,KAAKQ,MAAM;IAC1C;IAEA;;GAEC,GACD,MAAMC,kBAAkBjB,SAAiB,EAAqB;QAC5D,IAAI;YACF,MAAMkB,QAAQ,MAAMP,YAAE,CAACQ,OAAO,CAAC,IAAI,CAACpB,OAAO,CAACC;YAE5C,OAAOkB,MAAME,GAAG,CAAC,CAACZ,OAAS,IAAI,CAACT,OAAO,CAACC,WAAWQ;QACrD,EAAE,UAAM;YACN,OAAO,EAAE;QACX;IACF;IAEA;;GAEC,GACD,MAAMa,iBAAiBrB,SAAiB,EAAEkB,KAAe,EAAiB;QACxE,MAAMI,QAAQC,GAAG,CACfL,MAAME,GAAG,CAAC,OAAOZ;YACf,IAAI;gBACF,MAAMG,YAAE,CAACa,MAAM,CACb,IAAI,CAACzB,OAAO,CAACC,WAAW,IAAI,CAACK,iBAAiB,CAACG;YAEnD,EAAE,OAAOiB,KAAK;gBACZC,QAAQC,KAAK,CAACF;YAChB;QACF;IAEJ;IAEA;;GAEC,GACD,MAAMG,sBAAsB,EAC1B5B,SAAS,EACT6B,GAAG,EACHC,OAAO,EACP7B,QAAQ,EAMT,EAAiB;QAChB,IAAI;YACF,MAAM8B,WAAW,MAAMC,IAAAA,cAAK,EAAC;gBAC3BF,SAAS,eACJA;gBAELG,QAAQ;gBACRC,cAAc;gBACdL;YACF;YAEA,MAAMpB,iBAAiBH,IAAAA,sBAAU,EAACL;YAElC,MAAMS,WAAW,IAAI,CAACX,OAAO,CAACC,WAAWS;YACzC,MAAME,YAAE,CAACC,KAAK,CAACV,MAAKW,OAAO,CAACH,WAAW;gBAAEI,WAAW;YAAK;YAEzD,MAAMqB,SAASC,IAAAA,qBAAiB,EAAC1B;YAEjC,OAAO,IAAIY,QAAQ,CAACe,SAASC;gBAC3BP,SAASQ,IAAI,CAACC,IAAI,CAACL;gBACnBA,OAAOM,EAAE,CAAC,UAAU;oBAClBN,OAAOO,KAAK;oBACZL;gBACF;gBACAF,OAAOM,EAAE,CAAC,SAAS,CAAChB;oBAClBU,OAAOO,KAAK;oBACZJ,OAAOb;gBACT;YACF;QACF,EAAE,OAAOE,OAAO;YACdD,QAAQC,KAAK,CAAC,yBAAyBA;YACvC,MAAMA;QACR;IACF;IA7GAgB,YAAYC,MAA4B,CAAE;YACzBA;QAAf,IAAI,CAACxC,OAAO,GAAGwC,CAAAA,kBAAAA,OAAOxC,OAAO,YAAdwC,kBAAkB;QACjCjC,YAAE,CAACC,KAAK,CAAC,IAAI,CAACR,OAAO,EAAE;YAAEU,WAAW;QAAK,GAAG+B,KAAK,CAACnB,QAAQC,KAAK;IACjE;AA2GF"}
|
package/src/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../meerkat-node/src/index.ts"],"sourcesContent":["export * from './cube-to-sql/cube-to-sql';\nexport * from './duckdb-singleton';\nexport * from './node-sql-to-serialization';\nexport { convertCubeStringToTableSchema };\nimport { convertCubeStringToTableSchema } from '@devrev/meerkat-core';\nexport * from './duckdb-manager/duckdb-manager';\nexport * from './file-manager/file-manager';\n"],"names":["convertCubeStringToTableSchema"],"mappings":";+BAGSA;;;eAAAA,2CAA8B;;;;uBAHzB;uBACA;uBACA;6BAEiC;uBACjC;uBACA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../meerkat-node/src/node-sql-to-serialization.ts"],"sourcesContent":["import { SelectStatement } from '@devrev/meerkat-core';\nimport { duckdbExec } from './duckdb-exec';\n\nexport interface ParsedSerialization {\n [key: string]: {\n error: boolean;\n statements: SelectStatement[];\n };\n}\n\nexport const nodeSQLToSerialization = async (\n sql: string\n): Promise<ParsedSerialization> => {\n const queryOutput = await duckdbExec<\n {\n [key: string]: string;\n }[]\n >(sql);\n\n const parsedOutput: ParsedSerialization = {};\n\n for (const key in queryOutput[0]) {\n if (Object.prototype.hasOwnProperty.call(queryOutput[0], key)) {\n parsedOutput[key] = JSON.parse(queryOutput[0][key] as string) as {\n error: boolean;\n statements: SelectStatement[];\n };\n }\n }\n return parsedOutput;\n};\n"],"names":["nodeSQLToSerialization","sql","queryOutput","duckdbExec","parsedOutput","key","Object","prototype","hasOwnProperty","call","JSON","parse"],"mappings":";+BAUaA;;;eAAAA;;;4BATc;AASpB,MAAMA,yBAAyB,OACpCC;IAEA,MAAMC,cAAc,MAAMC,IAAAA,sBAAU,EAIlCF;IAEF,MAAMG,eAAoC,CAAC;IAE3C,IAAK,MAAMC,OAAOH,WAAW,CAAC,EAAE,CAAE;QAChC,IAAII,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACP,WAAW,CAAC,EAAE,EAAEG,MAAM;YAC7DD,YAAY,CAACC,IAAI,GAAGK,KAAKC,KAAK,CAACT,WAAW,CAAC,EAAE,CAACG,IAAI;QAIpD;IACF;IACA,OAAOD;AACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../meerkat-node/src/utils/duckdb-type-convertor.ts"],"sourcesContent":["import { ColumnInfo, ListTypeInfo, TableData, TypeInfo } from 'duckdb';\nimport { isNil } from 'lodash';\n\nexport const convertDuckDBValueToJS = (\n field: TypeInfo,\n value: unknown\n): unknown => {\n if (isNil(value)) return null;\n\n switch (field.id) {\n case 'SQL_NULL':\n return null;\n case 'DATE':\n case 'TIME':\n case 'TIMESTAMP':\n return new Date(value as string).toISOString();\n case 'FLOAT':\n case 'DOUBLE':\n return value;\n case 'INTEGER':\n case 'TINYINT':\n case 'SMALLINT':\n case 'BIGINT':\n case 'UTINYINT':\n case 'USMALLINT':\n case 'UINTEGER':\n case 'UBIGINT':\n case 'HUGEINT':\n case 'UHUGEINT':\n return parseInt((value as object).toString(), 10);\n case 'DECIMAL':\n return parseFloat((value as object).toString());\n case 'LIST': {\n if (!value) return [];\n const listValue = value as [];\n return listValue.map((item) =>\n convertDuckDBValueToJS((field as ListTypeInfo).child, item)\n );\n }\n default:\n return value;\n }\n};\n\nexport const convertTableDataToJSON = (\n data: TableData,\n columns: ColumnInfo[]\n): Record<string, unknown>[] => {\n return data.map((row: Record<string, unknown>) => {\n return columns.reduce((acc, column) => {\n acc[column.name] = convertDuckDBValueToJS(column.type, row[column.name]);\n return acc;\n }, {} as Record<string, unknown>);\n });\n};\n"],"names":["convertDuckDBValueToJS","convertTableDataToJSON","field","value","isNil","id","Date","toISOString","parseInt","toString","parseFloat","listValue","map","item","child","data","columns","row","reduce","acc","column","name","type"],"mappings":";;;;;;;;IAGaA,sBAAsB;eAAtBA;;IAyCAC,sBAAsB;eAAtBA;;;wBA3CS;AAEf,MAAMD,yBAAyB,CACpCE,OACAC;IAEA,IAAIC,IAAAA,aAAK,EAACD,QAAQ,OAAO;IAEzB,OAAQD,MAAMG,EAAE;QACd,KAAK;YACH,OAAO;QACT,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO,IAAIC,KAAKH,OAAiBI,WAAW;QAC9C,KAAK;QACL,KAAK;YACH,OAAOJ;QACT,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAOK,SAAS,AAACL,MAAiBM,QAAQ,IAAI;QAChD,KAAK;YACH,OAAOC,WAAW,AAACP,MAAiBM,QAAQ;QAC9C,KAAK;YAAQ;gBACX,IAAI,CAACN,OAAO,OAAO,EAAE;gBACrB,MAAMQ,YAAYR;gBAClB,OAAOQ,UAAUC,GAAG,CAAC,CAACC,OACpBb,uBAAuB,AAACE,MAAuBY,KAAK,EAAED;YAE1D;QACA;YACE,OAAOV;IACX;AACF;AAEO,MAAMF,yBAAyB,CACpCc,MACAC;IAEA,OAAOD,KAAKH,GAAG,CAAC,CAACK;QACf,OAAOD,QAAQE,MAAM,CAAC,CAACC,KAAKC;YAC1BD,GAAG,CAACC,OAAOC,IAAI,CAAC,GAAGrB,uBAAuBoB,OAAOE,IAAI,EAAEL,GAAG,CAACG,OAAOC,IAAI,CAAC;YACvE,OAAOF;QACT,GAAG,CAAC;IACN;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../meerkat-node/src/utils/hash-string.ts"],"sourcesContent":["import * as crypto from 'crypto';\n\n/**\n * Hash a string using MD5.\n */\nexport const hashString = (text: string): string => {\n return crypto.createHash('md5').update(text).digest('hex');\n};\n"],"names":["hashString","text","crypto","createHash","update","digest"],"mappings":";+BAKaA;;;eAAAA;;;wBALW;AAKjB,MAAMA,aAAa,CAACC;IACzB,OAAOC,QAAOC,UAAU,CAAC,OAAOC,MAAM,CAACH,MAAMI,MAAM,CAAC;AACtD"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|