@devrev/meerkat-node 0.0.75

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../meerkat-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":";;;;;;;;IAAaA,iBAAiB;eAAjBA;;IAWAC,gBAAgB;eAAhBA;;IAgBAC,YAAY;eAAZA;;IAiDAC,SAAS;eAATA;;;AA5EN,MAAMH,oBAAoB,CAAC;;;;;;;;;AASlC,CAAC;AAEM,MAAMC,mBAAmB,CAAC;;;;;;;;;;;;;;AAcjC,CAAC;AAEM,MAAMC,eAAe;IAC1BE,MAAM;IACNC,KAAK;IACLC,UAAU;QACR;YACEF,MAAM;YACNC,KAAK;YACLE,MAAM;QACR;QACA;YACEH,MAAM;YACNC,KAAK;YACLE,MAAM;QACR;KACD;IACDC,YAAY;QACV;YACEJ,MAAM;YACNC,KAAK;YACLE,MAAM;QACR;QACA;YACEH,MAAM;YACNC,KAAK;YACLE,MAAM;QACR;QACA;YACEH,MAAM;YACNC,KAAK;YACLE,MAAM;QACR;QACA;YACEH,MAAM;YACNC,KAAK;YACLE,MAAM;QACR;QACA;YACEH,MAAM;YACNC,KAAK,CAAC,+BAA+B,CAAC;YACtCE,MAAM;QACR;QACA;YACEH,MAAM;YACNC,KAAK;YACLE,MAAM;QACR;KACD;AACH;AAEO,MAAMJ,YAAY;IACvB;QACEM,UAAU;QACVC,aAAa,CAAC,2OAA2O,CAAC;QAC1PC,WAAW;YACTL,UAAU;gBAAC;aAA4B;YACvCM,SAAS,EAAE;YACXJ,YAAY;gBAAC;aAAqB;YAClCK,OAAO;QACT;QACAC,gBAAgB;YACd;gBACEC,qBAAqB;gBACrBC,4BAA4B;YAC9B;SACD;IACH;IACA;QACEP,UAAU;QACVC,aAAa,CAAC,gRAAgR,CAAC;QAC/RC,WAAW;YACTL,UAAU;gBAAC;aAA4B;YACvCM,SAAS,EAAE;YACXJ,YAAY;gBAAC;aAAqB;YAClCS,OAAO;gBACL,6BAA6B;gBAC7B,sBAAsB;YACxB;QACF;QACAH,gBAAgB;YACd;gBACE,uBAAuB;gBACvB,8BAA8B;YAChC;YACC;gBACC,uBAAuB;gBACvB,8BAA8B;YAChC;YACA;gBACE,uBAAuB;gBACvB,8BAA8B;YAChC;YACA;gBACE,uBAAuB;gBACvB,8BAA8B;YAChC;YACA;gBACE,uBAAuB;gBACvB,8BAA8B;YAChC;YACA;gBACE,uBAAuB;gBACvB,8BAA8B;YAChC;YACA;gBACE,uBAAuB;gBACvB,8BAA8B;YAChC;YACA;gBACE,uBAAuB;gBACvB,8BAA8B;YAChC;SACD;IACH;IACA;QACEL,UAAU;QACVC,aAAa,CAAC,qJAAqJ,CAAC;QACpKC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEM,QAAQ;oBACRC,UAAU;oBACVC,QAAQ;wBAAC;qBAAI;gBACf;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACEO,UAAU;gBACVC,aAAa;gBACbC,qBAAqB;gBACrBC,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdC,SAAU;oBACR;oBACA;oBACA;iBACD;YACH;YACA;gBACEN,UAAU;gBACVC,aAAa;gBACbC,qBAAqB;gBACrBC,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdC,SAAU;oBACR;iBACD;YACH;SACD;IACH;IACA;QACElB,UAAU;QACVC,aAAa,CAAC,sJAAsJ,CAAC;QACrKC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEM,QAAQ;oBACRC,UAAU;oBACVC,QAAQ;wBAAC;qBAAI;gBACf;aACD;YACDZ,YAAY,EAAE;QAChB;QACAM,gBAAgB;YACd;gBACEO,UAAU;gBACVC,aAAa;gBACbC,qBAAqB;gBACrBC,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdC,SAAS,EAAE;YACb;YACA;gBACEN,UAAU;gBACVC,aAAa;gBACbC,qBAAqB;gBACrBC,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACd,WAAY;oBACV;iBACD;YACH;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbC,qBAAqB;gBACrBC,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdC,SAAU;oBACR;oBACA;oBACA;iBACD;YACH;YACA;gBACEN,UAAU;gBACVC,aAAa;gBACbC,qBAAqB;gBACrBC,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdC,SAAS,EAAE;YACb;YACA;gBACEN,UAAU;gBACVC,aAAa;gBACbC,qBAAqB;gBACrBC,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACd,WAAW;oBACT;oBACA;iBACD;YACH;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbC,qBAAqB;gBACrBC,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACdC,SAAU;oBACR;oBACA;iBACD;YACH;YACA;gBACEN,UAAU;gBACVC,aAAa;gBACbC,qBAAqB;gBACrBC,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACd,WAAW,EAAE;YACf;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbC,qBAAqB;gBACrBC,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACd,WAAY;oBACV;oBACA;iBACD;YACH;YACA;gBACEL,UAAU;gBACVC,aAAa;gBACbC,qBAAqB;gBACrBC,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACd,WAAY;oBACV;iBACD;YACH;SACD;IACH;IACA;QACEjB,UAAU;QACVC,aAAa,CAAC,0JAA0J,CAAC;QACzKC,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;gBACbC,qBAAqB;gBACrBC,YAAY;gBACZC,YAAY;gBACZC,cAAc;gBACd,WAAY;oBAAC;iBAAS;YACxB;SACD;IACH;IACA;QACEjB,UAAU;QACVC,aAAa,CAAC,gVAAgV,CAAC;QAC/VC,WAAW;YACTL,UAAU;gBAAC;aAAI;YACfM,SAAS;gBACP;oBACEgB,KAAK;wBACH;4BACEV,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;6BAAI;wBACf;wBACA;4BACEF,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;6BAAI;wBACf;wBACA;4BACEF,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;6BAAI;wBACf;wBACA;4BACEF,QAAQ;4BACRC,UAAU;4BACVC,QAAQ;gCAAC;6BAAI;wBACf;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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"}
@@ -0,0 +1,2 @@
1
+ import { ContextParams, Query, TableSchema } from '@devrev/meerkat-core';
2
+ export declare const cubeQueryToSQL: (cubeQuery: Query, tableSchemas: TableSchema[], contextParams?: ContextParams) => Promise<string>;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "cubeQueryToSQL", {
3
+ enumerable: true,
4
+ get: function() {
5
+ return cubeQueryToSQL;
6
+ }
7
+ });
8
+ const _extends = require("@swc/helpers/_/_extends");
9
+ const _meerkatcore = require("@devrev/meerkat-core");
10
+ const _duckdbexec = require("../duckdb-exec");
11
+ const getFilterParamsSQL = async ({ cubeQuery, tableSchema, filterType })=>{
12
+ const filterParamsAST = (0, _meerkatcore.getFilterParamsAST)(cubeQuery, tableSchema, filterType);
13
+ const filterParamsSQL = [];
14
+ for (const filterParamAST of filterParamsAST){
15
+ if (!filterParamAST.ast) {
16
+ continue;
17
+ }
18
+ const queryOutput = await (0, _duckdbexec.duckdbExec)((0, _meerkatcore.astDeserializerQuery)(filterParamAST.ast));
19
+ const sql = (0, _meerkatcore.deserializeQuery)(queryOutput);
20
+ filterParamsSQL.push({
21
+ memberKey: filterParamAST.memberKey,
22
+ sql: sql,
23
+ matchKey: filterParamAST.matchKey
24
+ });
25
+ }
26
+ return filterParamsSQL;
27
+ };
28
+ const getFinalBaseSQL = async (cubeQuery, tableSchema)=>{
29
+ /**
30
+ * Apply transformation to the supplied base query.
31
+ * This involves updating the filter placeholder with the actual filter values.
32
+ */ const baseFilterParamsSQL = await getFilterParamsSQL({
33
+ cubeQuery: cubeQuery,
34
+ tableSchema,
35
+ filterType: 'BASE_FILTER'
36
+ });
37
+ const baseSQL = (0, _meerkatcore.applyFilterParamsToBaseSQL)(tableSchema.sql, baseFilterParamsSQL);
38
+ const baseSQLWithFilterProjection = (0, _meerkatcore.getWrappedBaseQueryWithProjections)({
39
+ baseQuery: baseSQL,
40
+ tableSchema,
41
+ query: cubeQuery
42
+ });
43
+ return baseSQLWithFilterProjection;
44
+ };
45
+ const cubeQueryToSQL = async (cubeQuery, tableSchemas, contextParams)=>{
46
+ const updatedTableSchemas = await Promise.all(tableSchemas.map(async (schema)=>{
47
+ const baseFilterParamsSQL = await getFinalBaseSQL(cubeQuery, schema);
48
+ return _extends._({}, schema, {
49
+ sql: baseFilterParamsSQL
50
+ });
51
+ }));
52
+ const updatedTableSchema = await (0, _meerkatcore.getCombinedTableSchema)(updatedTableSchemas, cubeQuery);
53
+ const ast = (0, _meerkatcore.cubeToDuckdbAST)(cubeQuery, updatedTableSchema);
54
+ if (!ast) {
55
+ throw new Error('Could not generate AST');
56
+ }
57
+ const queryTemp = (0, _meerkatcore.astDeserializerQuery)(ast);
58
+ const queryOutput = await (0, _duckdbexec.duckdbExec)(queryTemp);
59
+ const preBaseQuery = (0, _meerkatcore.deserializeQuery)(queryOutput);
60
+ const filterParamsSQL = await getFilterParamsSQL({
61
+ cubeQuery,
62
+ tableSchema: updatedTableSchema
63
+ });
64
+ const filterParamQuery = (0, _meerkatcore.applyFilterParamsToBaseSQL)(updatedTableSchema.sql, filterParamsSQL);
65
+ /**
66
+ * Replace CONTEXT_PARAMS with context params
67
+ */ const baseQuery = (0, _meerkatcore.detectApplyContextParamsToBaseSQL)(filterParamQuery, contextParams || {});
68
+ /**
69
+ * Replace BASE_TABLE_NAME with cube query
70
+ */ const replaceBaseTableName = preBaseQuery.replace(_meerkatcore.BASE_TABLE_NAME, `(${baseQuery}) AS ${updatedTableSchema.name}`);
71
+ /**
72
+ * Add measures to the query
73
+ */ const measures = cubeQuery.measures;
74
+ const dimensions = cubeQuery.dimensions || [];
75
+ const finalQuery = (0, _meerkatcore.applyProjectionToSQLQuery)(dimensions, measures, updatedTableSchema, replaceBaseTableName);
76
+ return finalQuery;
77
+ };
78
+
79
+ //# sourceMappingURL=cube-to-sql.js.map
@@ -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 FilterType,\n Query,\n TableSchema,\n applyFilterParamsToBaseSQL,\n applyProjectionToSQLQuery,\n astDeserializerQuery,\n cubeToDuckdbAST,\n deserializeQuery,\n detectApplyContextParamsToBaseSQL,\n getCombinedTableSchema,\n getFilterParamsAST,\n getWrappedBaseQueryWithProjections,\n} from '@devrev/meerkat-core';\nimport { duckdbExec } from '../duckdb-exec';\n\nconst getFilterParamsSQL = async ({\n cubeQuery,\n tableSchema,\n filterType,\n}: {\n cubeQuery: Query;\n tableSchema: TableSchema;\n filterType?: FilterType;\n}) => {\n const filterParamsAST = getFilterParamsAST(\n cubeQuery,\n tableSchema,\n filterType\n );\n const filterParamsSQL = [];\n for (const filterParamAST of filterParamsAST) {\n if (!filterParamAST.ast) {\n continue;\n }\n\n const queryOutput = await duckdbExec<\n {\n [key: string]: string;\n }[]\n >(astDeserializerQuery(filterParamAST.ast));\n\n const sql = deserializeQuery(queryOutput);\n\n filterParamsSQL.push({\n memberKey: filterParamAST.memberKey,\n sql: sql,\n matchKey: filterParamAST.matchKey,\n });\n }\n return filterParamsSQL;\n};\n\nconst getFinalBaseSQL = async (cubeQuery: Query, tableSchema: TableSchema) => {\n /**\n * Apply transformation to the supplied base query.\n * This involves updating the filter placeholder with the actual filter values.\n */\n const baseFilterParamsSQL = await getFilterParamsSQL({\n cubeQuery: cubeQuery,\n tableSchema,\n filterType: 'BASE_FILTER',\n });\n const baseSQL = applyFilterParamsToBaseSQL(\n tableSchema.sql,\n baseFilterParamsSQL\n );\n const baseSQLWithFilterProjection = getWrappedBaseQueryWithProjections({\n baseQuery: baseSQL,\n tableSchema,\n query: cubeQuery,\n });\n return baseSQLWithFilterProjection;\n};\n\nexport const cubeQueryToSQL = async (\n cubeQuery: Query,\n tableSchemas: TableSchema[],\n contextParams?: ContextParams\n) => {\n const updatedTableSchemas: TableSchema[] = await Promise.all(\n tableSchemas.map(async (schema: TableSchema) => {\n const baseFilterParamsSQL = await getFinalBaseSQL(cubeQuery, schema);\n return {\n ...schema,\n sql: baseFilterParamsSQL,\n };\n })\n );\n\n const updatedTableSchema = await getCombinedTableSchema(\n updatedTableSchemas,\n cubeQuery\n );\n\n const ast = cubeToDuckdbAST(cubeQuery, updatedTableSchema);\n if (!ast) {\n throw new Error('Could not generate AST');\n }\n\n const queryTemp = astDeserializerQuery(ast);\n\n const queryOutput = await duckdbExec<\n {\n [key: string]: string;\n }[]\n >(queryTemp);\n const preBaseQuery = deserializeQuery(queryOutput);\n\n const filterParamsSQL = await getFilterParamsSQL({\n cubeQuery,\n tableSchema: updatedTableSchema,\n });\n\n const filterParamQuery = applyFilterParamsToBaseSQL(\n updatedTableSchema.sql,\n filterParamsSQL\n );\n\n /**\n * Replace CONTEXT_PARAMS with context params\n */\n const baseQuery = detectApplyContextParamsToBaseSQL(\n filterParamQuery,\n contextParams || {}\n );\n\n /**\n * Replace BASE_TABLE_NAME with cube query\n */\n const replaceBaseTableName = preBaseQuery.replace(\n BASE_TABLE_NAME,\n `(${baseQuery}) AS ${updatedTableSchema.name}`\n );\n\n /**\n * Add measures to the query\n */\n const measures = cubeQuery.measures;\n const dimensions = cubeQuery.dimensions || [];\n const finalQuery = applyProjectionToSQLQuery(\n dimensions,\n measures,\n updatedTableSchema,\n replaceBaseTableName\n );\n\n return finalQuery;\n};\n"],"names":["cubeQueryToSQL","getFilterParamsSQL","cubeQuery","tableSchema","filterType","filterParamsAST","getFilterParamsAST","filterParamsSQL","filterParamAST","ast","queryOutput","duckdbExec","astDeserializerQuery","sql","deserializeQuery","push","memberKey","matchKey","getFinalBaseSQL","baseFilterParamsSQL","baseSQL","applyFilterParamsToBaseSQL","baseSQLWithFilterProjection","getWrappedBaseQueryWithProjections","baseQuery","query","tableSchemas","contextParams","updatedTableSchemas","Promise","all","map","schema","updatedTableSchema","getCombinedTableSchema","cubeToDuckdbAST","Error","queryTemp","preBaseQuery","filterParamQuery","detectApplyContextParamsToBaseSQL","replaceBaseTableName","replace","BASE_TABLE_NAME","name","measures","dimensions","finalQuery","applyProjectionToSQLQuery"],"mappings":";+BA6EaA;;;eAAAA;;;;6BA9DN;4BACoB;AAE3B,MAAMC,qBAAqB,OAAO,EAChCC,SAAS,EACTC,WAAW,EACXC,UAAU,EAKX;IACC,MAAMC,kBAAkBC,IAAAA,+BAAkB,EACxCJ,WACAC,aACAC;IAEF,MAAMG,kBAAkB,EAAE;IAC1B,KAAK,MAAMC,kBAAkBH,gBAAiB;QAC5C,IAAI,CAACG,eAAeC,GAAG,EAAE;YACvB;QACF;QAEA,MAAMC,cAAc,MAAMC,IAAAA,sBAAU,EAIlCC,IAAAA,iCAAoB,EAACJ,eAAeC,GAAG;QAEzC,MAAMI,MAAMC,IAAAA,6BAAgB,EAACJ;QAE7BH,gBAAgBQ,IAAI,CAAC;YACnBC,WAAWR,eAAeQ,SAAS;YACnCH,KAAKA;YACLI,UAAUT,eAAeS,QAAQ;QACnC;IACF;IACA,OAAOV;AACT;AAEA,MAAMW,kBAAkB,OAAOhB,WAAkBC;IAC/C;;;GAGC,GACD,MAAMgB,sBAAsB,MAAMlB,mBAAmB;QACnDC,WAAWA;QACXC;QACAC,YAAY;IACd;IACA,MAAMgB,UAAUC,IAAAA,uCAA0B,EACxClB,YAAYU,GAAG,EACfM;IAEF,MAAMG,8BAA8BC,IAAAA,+CAAkC,EAAC;QACrEC,WAAWJ;QACXjB;QACAsB,OAAOvB;IACT;IACA,OAAOoB;AACT;AAEO,MAAMtB,iBAAiB,OAC5BE,WACAwB,cACAC;IAEA,MAAMC,sBAAqC,MAAMC,QAAQC,GAAG,CAC1DJ,aAAaK,GAAG,CAAC,OAAOC;QACtB,MAAMb,sBAAsB,MAAMD,gBAAgBhB,WAAW8B;QAC7D,OAAO,eACFA;YACHnB,KAAKM;;IAET;IAGF,MAAMc,qBAAqB,MAAMC,IAAAA,mCAAsB,EACrDN,qBACA1B;IAGF,MAAMO,MAAM0B,IAAAA,4BAAe,EAACjC,WAAW+B;IACvC,IAAI,CAACxB,KAAK;QACR,MAAM,IAAI2B,MAAM;IAClB;IAEA,MAAMC,YAAYzB,IAAAA,iCAAoB,EAACH;IAEvC,MAAMC,cAAc,MAAMC,IAAAA,sBAAU,EAIlC0B;IACF,MAAMC,eAAexB,IAAAA,6BAAgB,EAACJ;IAEtC,MAAMH,kBAAkB,MAAMN,mBAAmB;QAC/CC;QACAC,aAAa8B;IACf;IAEA,MAAMM,mBAAmBlB,IAAAA,uCAA0B,EACjDY,mBAAmBpB,GAAG,EACtBN;IAGF;;GAEC,GACD,MAAMiB,YAAYgB,IAAAA,8CAAiC,EACjDD,kBACAZ,iBAAiB,CAAC;IAGpB;;GAEC,GACD,MAAMc,uBAAuBH,aAAaI,OAAO,CAC/CC,4BAAe,EACf,CAAC,CAAC,EAAEnB,UAAU,KAAK,EAAES,mBAAmBW,IAAI,CAAC,CAAC;IAGhD;;GAEC,GACD,MAAMC,WAAW3C,UAAU2C,QAAQ;IACnC,MAAMC,aAAa5C,UAAU4C,UAAU,IAAI,EAAE;IAC7C,MAAMC,aAAaC,IAAAA,sCAAyB,EAC1CF,YACAD,UACAZ,oBACAQ;IAGF,OAAOM;AACT"}
@@ -0,0 +1 @@
1
+ export declare const duckdbExec: <T = unknown>(query: string) => Promise<T>;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "duckdbExec", {
3
+ enumerable: true,
4
+ get: function() {
5
+ return duckdbExec;
6
+ }
7
+ });
8
+ const _duckdbsingleton = require("./duckdb-singleton");
9
+ const duckdbExec = (query)=>{
10
+ const db = _duckdbsingleton.DuckDBSingleton.getInstance();
11
+ return new Promise((resolve, reject)=>{
12
+ db.all(query, (err, res)=>{
13
+ if (err) {
14
+ reject(err);
15
+ }
16
+ resolve(res);
17
+ });
18
+ });
19
+ };
20
+
21
+ //# sourceMappingURL=duckdb-exec.js.map
@@ -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,18 @@
1
+ import { Database } from 'duckdb';
2
+ /**
3
+ * DuckDBSingleton is designed as a Singleton class, which ensures that only one Database connection exists across the entire application.
4
+ * This reduces the overhead involved in establishing new connections for each database request.
5
+ *
6
+ * The `getInstance` method returns a DuckDB Database instance. If an instance doesn't already exist, it creates one.
7
+ * 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.
8
+ *
9
+ * Usage: let duckDbConnection = DuckDBSingleton.getInstance();
10
+ *
11
+ * Note: In case of in-memory database, `new Database(':memory:')` in getInstance method. In-memory databases are faster for read/write operations
12
+ * 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.
13
+ */
14
+ export declare class DuckDBSingleton {
15
+ private static instance;
16
+ private constructor();
17
+ static getInstance(): Database;
18
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "DuckDBSingleton", {
3
+ enumerable: true,
4
+ get: function() {
5
+ return DuckDBSingleton;
6
+ }
7
+ });
8
+ const _duckdb = require("duckdb");
9
+ let DuckDBSingleton = class DuckDBSingleton {
10
+ static getInstance() {
11
+ if (!DuckDBSingleton.instance) {
12
+ DuckDBSingleton.instance = new _duckdb.Database(':memory:');
13
+ }
14
+ return DuckDBSingleton.instance;
15
+ }
16
+ constructor(){
17
+ // private to prevent direct instantiation.
18
+ }
19
+ };
20
+
21
+ //# sourceMappingURL=duckdb-singleton.js.map
@@ -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"}
package/src/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export * from './cube-to-sql/cube-to-sql';
2
+ export * from './duckdb-singleton';
3
+ export * from './node-sql-to-serialization';
4
+ export { convertCubeStringToTableSchema };
5
+ import { convertCubeStringToTableSchema } from '@devrev/meerkat-core';
package/src/index.js ADDED
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "convertCubeStringToTableSchema", {
3
+ enumerable: true,
4
+ get: function() {
5
+ return _meerkatcore.convertCubeStringToTableSchema;
6
+ }
7
+ });
8
+ const _export_star = require("@swc/helpers/_/_export_star");
9
+ _export_star._(require("./cube-to-sql/cube-to-sql"), exports);
10
+ _export_star._(require("./duckdb-singleton"), exports);
11
+ _export_star._(require("./node-sql-to-serialization"), exports);
12
+ const _meerkatcore = require("@devrev/meerkat-core");
13
+
14
+ //# sourceMappingURL=index.js.map
@@ -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';\n"],"names":["convertCubeStringToTableSchema"],"mappings":";+BAGSA;;;eAAAA,2CAA8B;;;;uBAHzB;uBACA;uBACA;6BAEiC"}
@@ -0,0 +1,8 @@
1
+ import { SelectStatement } from '@devrev/meerkat-core';
2
+ export interface ParsedSerialization {
3
+ [key: string]: {
4
+ error: boolean;
5
+ statements: SelectStatement[];
6
+ };
7
+ }
8
+ export declare const nodeSQLToSerialization: (sql: string) => Promise<ParsedSerialization>;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "nodeSQLToSerialization", {
3
+ enumerable: true,
4
+ get: function() {
5
+ return nodeSQLToSerialization;
6
+ }
7
+ });
8
+ const _duckdbexec = require("./duckdb-exec");
9
+ const nodeSQLToSerialization = async (sql)=>{
10
+ const queryOutput = await (0, _duckdbexec.duckdbExec)(sql);
11
+ const parsedOutput = {};
12
+ for(const key in queryOutput[0]){
13
+ if (Object.prototype.hasOwnProperty.call(queryOutput[0], key)) {
14
+ parsedOutput[key] = JSON.parse(queryOutput[0][key]);
15
+ break;
16
+ }
17
+ }
18
+ return parsedOutput;
19
+ };
20
+
21
+ //# sourceMappingURL=node-sql-to-serialization.js.map
@@ -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 {\n error: boolean;\n statements: SelectStatement[];\n };\n break;\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;YAIlD;QACF;IACF;IACA,OAAOD;AACT"}