@sqlrooms/duckdb 0.5.0 → 0.6.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"arrow-utils.test.js","sourceRoot":"","sources":["../../src/__tests__/arrow-utils.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arrow-utils.test.js","sourceRoot":"","sources":["../../src/__tests__/arrow-utils.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAC,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AAEhD,oGAAoG;AAEpG,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,8BAA8B;YAC9B,MAAM,IAAI,GAAqD;gBAC7D,EAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAC;gBACnC,EAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAC;aACpC,CAAC;YAEF,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAExC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,QAAQ,GAA8B;gBAC1C,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAC;gBAClC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAC;aACnC,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,WAAW,GAAG,iBAAiB,CAAC,CAAC,0BAA0B;YACjE,MAAM,IAAI,GAAuC;gBAC/C,EAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAC;gBAChC,EAAC,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAC;aACvC,CAAC;YAEF,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAExC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,QAAQ,GAA8B;gBAC1C,EAAC,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAC;gBACrC,EAAC,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAC,EAAE,4CAA4C;aACvF,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG;gBACX;oBACE,EAAE,EAAE,CAAC;oBACL,SAAS,EAAE,SAAS;oBACpB,IAAI,EAAE,IAAI;iBACX;aACF,CAAC;YAEF,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAEvC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB;oBACE,EAAE,EAAE,CAAC;oBACL,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE;oBAC9B,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;iBACrB;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,oGAAoG;YACpG,uEAAuE;YACvE,oEAAoE;YACpE,MAAM,IAAI,GAAG;gBACX;oBACE,EAAE,EAAE,CAAC;oBACL,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,UAAU;4BAChB,OAAO,EAAE,KAAK;yBACf;qBACF,CAAC;iBACH;gBACD;oBACE,EAAE,EAAE,CAAC;oBACL,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,IAAI;yBACd;qBACF,CAAC;iBACH;aACF,CAAC;YAEF,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAEvC,wDAAwD;YACxD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACxC,GAAG,GAAG;gBACN,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAc,CAAC;aACrC,CAAC,CAAC,CAAC;YAEJ,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;gBAC3B;oBACE,EAAE,EAAE,CAAC;oBACL,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,UAAU;4BAChB,OAAO,EAAE,KAAK;yBACf;qBACF;iBACF;gBACD;oBACE,EAAE,EAAE,CAAC;oBACL,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,IAAI;yBACd;qBACF;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,+DAA+D;YAC/D,kEAAkE;YAClE,MAAM,IAAI,GAAG;gBACX;oBACE,EAAE,EAAE,CAAC;oBACL,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAChC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;iBAClC;aACF,CAAC;YAEF,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAEvC,uDAAuD;YACvD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACxC,GAAG,GAAG;gBACN,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAc,CAAC;gBACpC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAgB,CAAC;aACzC,CAAC,CAAC,CAAC;YAEJ,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;gBAC3B;oBACE,EAAE,EAAE,CAAC;oBACL,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;oBAChB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;iBAClB;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;YACvE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACvD,6DAA6D;YAC7D,MAAM,WAAW,GAAG,CAAC,CAAC;YAEtB,uDAAuD;YACvD,MAAM,IAAI,GAAG;gBACX;oBACE,EAAE,EAAE,WAAW;oBACf,UAAU,EAAE,SAAS;oBACrB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;wBACvB,IAAI,EAAE;4BACJ,EAAE,EAAE,WAAW,EAAE,QAAQ;4BACzB,IAAI,EAAE,MAAM;4BACZ,UAAU,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAE;4BACtD,KAAK,EAAE;gCACL,KAAK,EAAE,IAAI;gCACX,IAAI,EAAE,WAAW,EAAE,QAAQ;6BAC5B;yBACF;wBACD,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;qBAC5B,CAAC;iBACH;aACF,CAAC;YAEF,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAEvC,wDAAwD;YACxD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACxC,GAAG,GAAG;gBACN,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAkB,CAAC;aAC7C,CAAC,CAAC,CAAC;YAEJ,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;gBAC3B;oBACE,EAAE,EAAE,CAAC;oBACL,UAAU,EAAE,SAAS,CAAC,OAAO,EAAE;oBAC/B,QAAQ,EAAE;wBACR,IAAI,EAAE;4BACJ,EAAE,EAAE,CAAC;4BACL,IAAI,EAAE,MAAM;4BACZ,UAAU,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAE;4BACtD,KAAK,EAAE;gCACL,KAAK,EAAE,IAAI;gCACX,IAAI,EAAE,CAAC;6BACR;yBACF;wBACD,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;qBAC5B;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import * as arrow from 'apache-arrow';\nimport {arrowTableToJson} from '../arrow-utils';\n\n/// TODO: Revise tests for nested objects once https://github.com/apache/arrow/issues/33394 is fixed\n\ndescribe('arrow-utils', () => {\n describe('arrowTableToJson', () => {\n it('should convert Arrow table to JSON array', () => {\n // Create a simple Arrow table\n const data: Array<{id: bigint; name: string; score: number}> = [\n {id: 1n, name: 'John', score: 95.5},\n {id: 2n, name: 'Jane', score: 88.0},\n ];\n\n const table = arrow.tableFromJSON(data);\n\n const result = arrowTableToJson(table);\n const expected: Record<string, unknown>[] = [\n {id: 1, name: 'John', score: 95.5},\n {id: 2, name: 'Jane', score: 88.0},\n ];\n expect(result).toEqual(expected);\n });\n\n it('should handle large BigInt values', () => {\n const largeNumber = 9007199254740991n; // Number.MAX_SAFE_INTEGER\n const data: Array<{id: bigint; value: string}> = [\n {id: largeNumber, value: 'test'},\n {id: largeNumber + 1n, value: 'test2'},\n ];\n\n const table = arrow.tableFromJSON(data);\n\n const result = arrowTableToJson(table);\n const expected: Record<string, unknown>[] = [\n {id: 9007199254740991, value: 'test'},\n {id: '9007199254740992', value: 'test2'}, // Beyond MAX_SAFE_INTEGER, should be string\n ];\n expect(result).toEqual(expected);\n });\n\n it('should handle timestamps and dates', () => {\n const timestamp = new Date('2024-02-05T12:30:45.123Z');\n const date = new Date('2024-02-05');\n const data = [\n {\n id: 1,\n timestamp: timestamp,\n date: date,\n },\n ];\n\n const table = arrow.tableFromJSON(data);\n const result = arrowTableToJson(table);\n\n expect(result).toEqual([\n {\n id: 1,\n timestamp: timestamp.getTime(),\n date: date.getTime(),\n },\n ]);\n });\n\n it('should handle nested objects (structs)', () => {\n /// TODO: Revise tests for nested objects once https://github.com/apache/arrow/issues/33394 is fixed\n // For now, we'll use JSON strings for nested objects as Arrow's JS API\n // doesn't seem to have a straightforward way to create struct types\n const data = [\n {\n id: 1,\n user: JSON.stringify({\n name: 'John',\n address: {\n city: 'New York',\n country: 'USA',\n },\n }),\n },\n {\n id: 2,\n user: JSON.stringify({\n name: 'Jane',\n address: {\n city: 'London',\n country: 'UK',\n },\n }),\n },\n ];\n\n const table = arrow.tableFromJSON(data);\n const result = arrowTableToJson(table);\n\n // Parse the JSON strings back to objects for comparison\n const parsedResult = result.map((row) => ({\n ...row,\n user: JSON.parse(row.user as string),\n }));\n\n expect(parsedResult).toEqual([\n {\n id: 1,\n user: {\n name: 'John',\n address: {\n city: 'New York',\n country: 'USA',\n },\n },\n },\n {\n id: 2,\n user: {\n name: 'Jane',\n address: {\n city: 'London',\n country: 'UK',\n },\n },\n },\n ]);\n });\n\n it('should handle arrays', () => {\n // For now, we'll use JSON strings for arrays as Arrow's JS API\n // doesn't seem to have a straightforward way to create list types\n const data = [\n {\n id: 1,\n tags: JSON.stringify(['a', 'b']),\n scores: JSON.stringify([1, 2, 3]),\n },\n ];\n\n const table = arrow.tableFromJSON(data);\n const result = arrowTableToJson(table);\n\n // Parse the JSON strings back to arrays for comparison\n const parsedResult = result.map((row) => ({\n ...row,\n tags: JSON.parse(row.tags as string),\n scores: JSON.parse(row.scores as string),\n }));\n\n expect(parsedResult).toEqual([\n {\n id: 1,\n tags: ['a', 'b'],\n scores: [1, 2, 3],\n },\n ]);\n });\n\n it('should handle combination of structs, BigInts, and timestamps', () => {\n const timestamp = new Date('2024-02-05T12:30:45.123Z');\n // const largeNumber = 9007199254740991n; // MAX_SAFE_INTEGER\n const largeNumber = 1;\n\n // Create data with JSON strings for complex structures\n const data = [\n {\n id: largeNumber,\n created_at: timestamp,\n metadata: JSON.stringify({\n user: {\n id: largeNumber, // + 1n,\n name: 'John',\n last_login: new Date('2024-01-01T00:00:00Z').getTime(),\n stats: {\n score: 95.5,\n rank: largeNumber, // + 2n,\n },\n },\n tags: ['active', 'premium'],\n }),\n },\n ];\n\n const table = arrow.tableFromJSON(data);\n const result = arrowTableToJson(table);\n\n // Parse the JSON strings back to objects for comparison\n const parsedResult = result.map((row) => ({\n ...row,\n metadata: JSON.parse(row.metadata as string),\n }));\n\n expect(parsedResult).toEqual([\n {\n id: 1,\n created_at: timestamp.getTime(),\n metadata: {\n user: {\n id: 1,\n name: 'John',\n last_login: new Date('2024-01-01T00:00:00Z').getTime(),\n stats: {\n score: 95.5,\n rank: 1,\n },\n },\n tags: ['active', 'premium'],\n },\n },\n ]);\n });\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"sql-from.test.js","sourceRoot":"","sources":["../../src/__tests__/sql-from.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sql-from.test.js","sourceRoot":"","sources":["../../src/__tests__/sql-from.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {sqlFrom, literalToSQL} from '../sql-from';\n\ndescribe('sql-from', () => {\n describe('literalToSQL', () => {\n it('should convert numbers correctly', () => {\n expect(literalToSQL(42)).toBe('42');\n expect(literalToSQL(3.14)).toBe('3.14');\n expect(literalToSQL(Infinity)).toBe('NULL');\n expect(literalToSQL(NaN)).toBe('NULL');\n });\n\n it('should convert strings correctly', () => {\n expect(literalToSQL('hello')).toBe(\"'hello'\");\n expect(literalToSQL(\"O'Neil\")).toBe(\"'O''Neil'\"); // Escapes single quotes\n });\n\n it('should convert booleans correctly', () => {\n expect(literalToSQL(true)).toBe('TRUE');\n expect(literalToSQL(false)).toBe('FALSE');\n });\n\n it('should convert dates correctly', () => {\n const date = new Date('2024-02-05');\n expect(literalToSQL(date)).toMatch(/^DATE '\\d{4}-\\d{1,2}-\\d{1,2}'$/);\n\n const timestamp = new Date('2024-02-05T12:30:00Z');\n expect(literalToSQL(timestamp)).toMatch(/^epoch_ms\\(\\d+\\)$/);\n });\n\n it('should handle null and undefined', () => {\n expect(literalToSQL(null)).toBe('NULL');\n expect(literalToSQL(undefined)).toBe('NULL');\n });\n\n it('should convert RegExp to string', () => {\n expect(literalToSQL(/test/)).toBe(\"'test'\");\n });\n });\n\n describe('sqlFrom', () => {\n it('should create SQL query from array of objects', () => {\n const data = [\n {id: 1, name: 'John'},\n {id: 2, name: 'Jane'},\n ] as Record<string, unknown>[];\n\n const result = sqlFrom(data);\n expect(result).toBe(\n '(SELECT 1 AS \"id\", \\'John\\' AS \"name\") ' +\n 'UNION ALL ' +\n '(SELECT 2 AS \"id\", \\'Jane\\' AS \"name\")',\n );\n });\n\n it('should handle custom column mapping', () => {\n const data = [\n {id: 1, firstName: 'John'},\n {id: 2, firstName: 'Jane'},\n ] as Record<string, unknown>[];\n\n const result = sqlFrom(data, {\n columns: {id: 'user_id', firstName: 'name'},\n });\n expect(result).toBe(\n '(SELECT 1 AS \"user_id\", \\'John\\' AS \"name\") ' +\n 'UNION ALL ' +\n '(SELECT 2 AS \"user_id\", \\'Jane\\' AS \"name\")',\n );\n });\n\n it('should handle column subset selection', () => {\n const data = [\n {id: 1, name: 'John', age: 30},\n {id: 2, name: 'Jane', age: 25},\n ] as Record<string, unknown>[];\n\n const result = sqlFrom(data, {columns: ['id', 'name']});\n expect(result).toBe(\n '(SELECT 1 AS \"id\", \\'John\\' AS \"name\") ' +\n 'UNION ALL ' +\n '(SELECT 2 AS \"id\", \\'Jane\\' AS \"name\")',\n );\n });\n\n it('should throw error for empty column set', () => {\n const data = [] as Record<string, unknown>[];\n expect(() => sqlFrom(data)).toThrow(\n 'Can not create table from empty column set.',\n );\n });\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"arrow-utils.js","sourceRoot":"","sources":["../src/arrow-utils.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAkB;IAElB,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACjC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACvC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CACH,CACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,IAAI,MAAM,CAAC,gBAAgB,IAAI,KAAK,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACzE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"arrow-utils.js","sourceRoot":"","sources":["../src/arrow-utils.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAkB;IAElB,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACjC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACvC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CACH,CACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,IAAI,MAAM,CAAC,gBAAgB,IAAI,KAAK,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACzE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC","sourcesContent":["import * as arrow from 'apache-arrow';\n\n/**\n * Converts an Arrow table to a JSON-compatible array of objects\n * @see https://duckdb.org/docs/api/wasm/query.html#arrow-table-to-json\n * @see https://github.com/apache/arrow/issues/37856\n */\nexport function arrowTableToJson(\n table: arrow.Table,\n): Record<string, unknown>[] {\n return table.toArray().map((row) =>\n Object.fromEntries(\n Object.entries(row).map(([key, value]) => {\n return [key, convertValue(value)];\n }),\n ),\n );\n}\n\n/**\n * Converts an Arrow table value to a JSON-compatible value\n * @param value\n * @returns\n */\nfunction convertValue(value: unknown) {\n if (typeof value === 'bigint') {\n if (value >= Number.MIN_SAFE_INTEGER && value <= Number.MAX_SAFE_INTEGER) {\n return Number(value);\n }\n return String(value);\n }\n if (typeof value === 'number') {\n return value;\n }\n return String(value);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"duckdb.js","sourceRoot":"","sources":["../src/duckdb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"duckdb.js","sourceRoot":"","sources":["../src/duckdb.ts"],"names":[],"mappings":"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","sourcesContent":["import {DuckDBDataProtocol} from '@duckdb/duckdb-wasm';\nimport {escapeVal, getColValAsNumber, getDuckDb} from './useDuckDb';\nimport * as arrow from 'apache-arrow';\nimport {sqlFrom} from './sql-from';\n\n/**\n * Create a table from a query.\n * @param tableName - The name of the table to create.\n * @param query - The query to create the table from.\n * @returns The table that was created.\n */\nexport async function createTableFromQuery(tableName: string, query: string) {\n const {conn} = await getDuckDb();\n const rowCount = getColValAsNumber(\n await conn.query(\n `CREATE OR REPLACE TABLE main.${tableName} AS (\n ${query}\n )`,\n ),\n );\n return {tableName, rowCount};\n}\n\n/**\n * Create a view from a registered file.\n * @param filePath - The path to the file to create the view from.\n * @param schema - The schema to create the view in.\n * @param tableName - The name of the table to create.\n * @param opts - The options to create the view with.\n * @returns The view that was created.\n */\nexport async function createViewFromRegisteredFile(\n filePath: string,\n schema: string,\n tableName: string,\n opts?: {\n mode: 'table' | 'view';\n },\n): Promise<{tableName: string; rowCount: number}> {\n const {mode = 'table'} = opts ?? {};\n const {conn} = await getDuckDb();\n const fileNameLower = filePath.toLowerCase();\n const quotedFileName = escapeVal(filePath);\n const readFileQuery =\n fileNameLower.endsWith('.json') ||\n fileNameLower.endsWith('.geojson') ||\n fileNameLower.endsWith('.ndjson')\n ? `read_json_auto(${quotedFileName}, maximum_object_size=104857600)` // 100MB\n : fileNameLower.endsWith('.parquet')\n ? `parquet_scan(${quotedFileName})`\n : fileNameLower.endsWith('.csv') || fileNameLower.endsWith('.tsv')\n ? `read_csv(${quotedFileName}, SAMPLE_SIZE=-1, AUTO_DETECT=TRUE)`\n : quotedFileName;\n // TODO: tableName generate\n const rowCount = getColValAsNumber(\n await conn.query(\n `CREATE OR REPLACE ${mode} ${schema}.${tableName} AS\n SELECT * FROM ${readFileQuery}`,\n ),\n );\n // }\n return {tableName, rowCount};\n}\n\n/**\n * Create a view from a file.\n * @param filePath - The path to the file to create the view from.\n * @param schema - The schema to create the view in.\n * @param tableName - The name of the table to create.\n * @param file - The file to create the view from.\n */\nexport async function createViewFromFile(\n filePath: string,\n schema: string,\n tableName: string,\n file: File | Uint8Array,\n): Promise<{tableName: string; rowCount: number}> {\n const duckConn = await getDuckDb();\n\n await duckConn.db.dropFile(filePath);\n if (file instanceof File) {\n await duckConn.db.registerFileHandle(\n filePath,\n file,\n DuckDBDataProtocol.BROWSER_FILEREADER,\n true,\n );\n } else {\n await duckConn.db.registerFileBuffer(filePath, file);\n }\n\n return createViewFromRegisteredFile(filePath, schema, tableName);\n}\n\n/**\n * Create a table from an Arrow table.\n * @param tableName - The name of the table to create.\n * @param arrowTable - The Arrow table to create the table from.\n */\nexport async function createTableFromArrowTable(\n tableName: string,\n data: arrow.Table,\n) {\n const {conn} = await getDuckDb();\n await conn.insertArrowTable(data, {name: tableName});\n}\n\n/**\n * Create a table from an array of objects.\n * @param tableName - The name of the table to create.\n * @param data - The array of objects to create the table from.\n */\nexport async function createTableFromObjects(\n tableName: string,\n data: Record<string, unknown>[],\n) {\n const {conn} = await getDuckDb();\n const query = sqlFrom(data);\n await conn.query(`CREATE OR REPLACE TABLE ${tableName} AS ${query}`);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"exportToCsv.js","sourceRoot":"","sources":["../src/exportToCsv.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exportToCsv.js","sourceRoot":"","sources":["../src/exportToCsv.ts"],"names":[],"mappings":"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","sourcesContent":["import * as arrow from 'apache-arrow';\nimport {getDuckDb} from './useDuckDb';\n\nexport async function exportToCsv(\n query: string,\n fileName: string,\n pageSize = 100000,\n) {\n const {conn} = await getDuckDb();\n\n let offset = 0;\n const blobs: Blob[] = [];\n let headersAdded = false;\n\n while (true) {\n const currentQuery = `(\n ${query}\n ) LIMIT ${pageSize} OFFSET ${offset}`;\n const results = await conn.query(currentQuery);\n\n // Check if we received any results; if not, we are done.\n if (results.numRows === 0) {\n break;\n }\n\n const csvChunk = convertToCsv(results, !headersAdded);\n blobs.push(new Blob([csvChunk], {type: 'text/csv'}));\n\n // Ensure that headers are not added in subsequent iterations\n headersAdded = true;\n\n // Increment offset to fetch the next chunk\n offset += pageSize;\n }\n\n const fullCsvBlob = new Blob(blobs, {type: 'text/csv'});\n downloadBlob(fullCsvBlob, fileName);\n}\n\nfunction convertToCsv(\n arrowTable: arrow.Table,\n includeHeaders: boolean,\n): string {\n // return includeHeaders\n // ? csvFormat(arrowTable.toArray())\n // : csvFormatBody(arrowTable.toArray());\n\n const columnNames = arrowTable.schema.fields.map((field) => field.name);\n const columnsByName = columnNames.reduce(\n (acc, columnName) => {\n const col = arrowTable.getChild(columnName);\n if (col) acc[columnName] = col;\n return acc;\n },\n {} as Record<string, arrow.Vector>,\n );\n\n // Add header\n let csvContent = includeHeaders ? columnNames.join(',') + '\\r\\n' : '';\n\n // Add data rows\n for (let i = 0; i < arrowTable.numRows; i++) {\n const csvRow = columnNames\n .map((columnName) => {\n const cellValue = columnsByName[columnName]?.get(i);\n\n // If the cell value is null or undefined, set it to an empty string.\n if (cellValue == null) return '';\n\n // Convert cell value to string\n let cellValueStr = String(cellValue);\n\n // Escape double quotes and wrap cell value in double quotes if necessary\n if (\n cellValueStr.includes('\"') ||\n cellValueStr.includes(',') ||\n cellValueStr.includes('\\n')\n ) {\n cellValueStr = '\"' + cellValueStr.replace(/\"/g, '\"\"') + '\"';\n }\n\n return cellValueStr;\n })\n .join(',');\n\n csvContent += csvRow + '\\r\\n';\n }\n\n return csvContent;\n}\n\nfunction downloadBlob(blob: Blob, filename: string) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n URL.revokeObjectURL(url);\n document.body.removeChild(a);\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -3,5 +3,5 @@ export * from './types';
3
3
  export * from './useDuckDb';
4
4
  export * from './exportToCsv';
5
5
  export * from './arrow-utils';
6
- export * from './useDuckDbQuery';
6
+ export * from './useSql';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -3,5 +3,5 @@ export * from './types';
3
3
  export * from './useDuckDb';
4
4
  export * from './exportToCsv';
5
5
  export * from './arrow-utils';
6
- export * from './useDuckDbQuery';
6
+ export * from './useSql';
7
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC","sourcesContent":["export * from './duckdb';\nexport * from './types';\nexport * from './useDuckDb';\nexport * from './exportToCsv';\nexport * from './arrow-utils';\nexport * from './useSql';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"sql-from.js","sourceRoot":"","sources":["../src/sql-from.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sql-from.js","sourceRoot":"","sources":["../src/sql-from.ts"],"names":[],"mappings":"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","sourcesContent":["// Adapted from https://github.com/uwdata/mosaic/blob/main/packages/sql/src/load/sql-from.js\n// BSD 3-Clause License Copyright (c) 2023, UW Interactive Data Lab\n\n/**\n * Create a SQL query that embeds the given data for loading.\n * @param {*} data The dataset as an array of objects.\n * @param {object} [options] Loading options.\n * @param {string[]|Record<string,string>} [options.columns] The columns to include.\n * If not specified, the keys of the first data object are used.\n * @returns {string} SQL query string to load data.\n */\nexport function sqlFrom(\n data: Record<string, unknown>[],\n {\n columns = Object.keys(data?.[0] || {}),\n }: {columns?: string[] | Record<string, string>} = {},\n) {\n let keys: string[] = [];\n let columnMap: Record<string, string>;\n if (Array.isArray(columns)) {\n keys = columns;\n columnMap = keys.reduce((m, k) => ({...m, [k]: k}), {});\n } else {\n columnMap = columns;\n keys = Object.keys(columns);\n }\n if (!keys.length) {\n throw new Error('Can not create table from empty column set.');\n }\n const subq = [];\n for (const datum of data) {\n const sel = keys.map(\n (k) => `${literalToSQL(datum[k])} AS \"${columnMap[k]}\"`,\n );\n subq.push(`(SELECT ${sel.join(', ')})`);\n }\n return subq.join(' UNION ALL ');\n}\n\n/**\n * Convert a value to a SQL literal.\n * @param {*} value The value to convert.\n * @returns {string} The SQL literal.\n */\nexport function literalToSQL(value: unknown) {\n switch (typeof value) {\n case 'number':\n return Number.isFinite(value) ? `${value}` : 'NULL';\n case 'string':\n return `'${value.replace(`'`, `''`)}'`;\n case 'boolean':\n return value ? 'TRUE' : 'FALSE';\n default:\n if (value == null) {\n return 'NULL';\n } else if (value instanceof Date) {\n const ts = +value;\n if (Number.isNaN(ts)) return 'NULL';\n const y = value.getUTCFullYear();\n const m = value.getUTCMonth();\n const d = value.getUTCDate();\n return ts === Date.UTC(y, m, d)\n ? `DATE '${y}-${m + 1}-${d}'` // utc date\n : `epoch_ms(${ts})`; // timestamp\n } else if (value instanceof RegExp) {\n return `'${value.source}'`;\n } else {\n // otherwise rely on string coercion\n return `${value}`;\n }\n }\n}\n"]}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["export type TableColumn = {\n name: string;\n type: string;\n};\n\nexport type DataTable = {\n tableName: string;\n columns: TableColumn[];\n rowCount?: number;\n inputFileName?: string;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useDuckDb.js","sourceRoot":"","sources":["../src/useDuckDb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useDuckDb.js","sourceRoot":"","sources":["../src/useDuckDb.ts"],"names":[],"mappings":"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","sourcesContent":["import * as duckdb from '@duckdb/duckdb-wasm';\nimport * as arrow from 'apache-arrow';\nimport {DataTable, TableColumn} from './types';\nimport {useState, useEffect} from 'react';\n\n/**\n * @deprecated DuckConn is deprecated, use DuckDb instead\n */\nexport type DuckConn = DuckDb;\n\nexport type DuckDb = {\n db: duckdb.AsyncDuckDB;\n conn: duckdb.AsyncDuckDBConnection;\n worker: Worker;\n};\n\nconst ENABLE_DUCK_LOGGING = false;\n\nconst SilentLogger = {\n log: () => {\n /* do nothing */\n },\n};\n\n// TODO: shut DB down at some point\n\nlet duckConn: DuckDb;\nlet initialize: Promise<DuckDb> | undefined;\n\nexport class DuckQueryError extends Error {\n readonly cause: unknown;\n readonly query: string | undefined;\n readonly queryCallStack: string | undefined;\n constructor(err: unknown, query: string, stack: string | undefined) {\n super(\n `DB query failed: ${\n err instanceof Error ? err.message : err\n }\\n\\nFull query:\\n\\n${query}\\n\\nQuery call stack:\\n\\n${stack}\\n\\n`,\n );\n this.cause = err;\n this.query = query;\n this.queryCallStack = stack;\n Object.setPrototypeOf(this, DuckQueryError.prototype);\n }\n getMessageForUser() {\n const msg = this.cause instanceof Error ? this.cause.message : this.message;\n return msg;\n }\n}\n\n/**\n * @deprecated getDuckConn is deprecated, use getDuckDb instead\n */\nexport const getDuckConn = getDuckDb;\n\nexport async function getDuckDb(): Promise<DuckDb> {\n if (!globalThis.Worker) {\n return Promise.reject('No Worker support');\n }\n if (duckConn) {\n return duckConn;\n } else if (initialize !== undefined) {\n // The initialization has already been started, wait for it to finish\n return initialize;\n }\n\n let resolve: (value: DuckDb) => void;\n let reject: (reason?: unknown) => void;\n initialize = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n\n try {\n // TODO: Consider to load locally https://github.com/duckdb/duckdb-wasm/issues/1425#issuecomment-1742156605\n const allBundles = duckdb.getJsDelivrBundles();\n const bestBundle = await duckdb.selectBundle(allBundles);\n if (!bestBundle.mainWorker) {\n throw new Error('No best bundle found for DuckDB worker');\n }\n const workerUrl = URL.createObjectURL(\n new Blob([`importScripts(\"${bestBundle.mainWorker}\");`], {\n type: 'text/javascript',\n }),\n );\n // const worker = await duckdb.createWorker(bestBundle.mainWorker);\n const worker = new window.Worker(workerUrl);\n const logger = ENABLE_DUCK_LOGGING\n ? new duckdb.ConsoleLogger()\n : SilentLogger;\n const db = new (class extends duckdb.AsyncDuckDB {\n onError(event: ErrorEvent) {\n super.onError(event);\n console.error('onError', event);\n }\n })(logger, worker);\n await db.instantiate(bestBundle.mainModule, bestBundle.pthreadWorker);\n URL.revokeObjectURL(workerUrl);\n await db.open({\n path: ':memory:',\n query: {\n // castBigIntToDouble: true\n },\n });\n const conn = await db.connect();\n // Replace conn.query to include full query in the error message\n const connQuery = conn.query;\n conn.query = (async (q: string) => {\n const stack = new Error().stack;\n try {\n return await connQuery.call(conn, q);\n } catch (err) {\n throw new DuckQueryError(err, q, stack);\n // throw new Error(\n // `Query failed: ${err}\\n\\nFull query:\\n\\n${q}\\n\\nQuery call stack:\\n\\n${stack}\\n\\n`,\n // );\n }\n }) as typeof conn.query;\n await conn.query(`\n SET max_expression_depth TO 100000;\n SET memory_limit = '10GB';\n `);\n duckConn = {db, conn, worker};\n resolve!(duckConn);\n } catch (err) {\n reject!(err);\n throw err;\n }\n\n return duckConn;\n}\n\n// Cache the promise to avoid multiple initialization attempts\nlet duckPromise: Promise<DuckDb> | null = null;\n\n/**\n * @deprecated useDuckConn is deprecated, use useDuckDb instead\n */\nexport const useDuckConn = useDuckDb;\n\nexport function useDuckDb(): DuckDb {\n if (!duckPromise) {\n duckPromise = getDuckDb();\n }\n\n // If we don't have a connection yet, throw the promise\n // This will trigger Suspense\n if (!duckConn) {\n throw duckPromise;\n }\n\n return duckConn;\n}\n\nexport const isNumericDuckType = (type: string) =>\n type.indexOf('INT') >= 0 ||\n type.indexOf('DECIMAL') >= 0 ||\n type.indexOf('FLOAT') >= 0 ||\n type.indexOf('REAL') >= 0 ||\n type.indexOf('DOUBLE') >= 0;\n\nexport function getColValAsNumber(\n res: arrow.Table,\n column: string | number = 0,\n index = 0,\n): number {\n const v = (\n typeof column === 'number' ? res.getChildAt(column) : res.getChild(column)\n )?.get(index);\n if (v === undefined || v === null) {\n return NaN;\n }\n // if it's an array (can be returned by duckdb as bigint)\n return Number(v[0] ?? v);\n}\n\nexport const escapeVal = (val: unknown) => {\n return `'${String(val).replace(/'/g, \"''\")}'`;\n};\n\nexport const escapeId = (id: string) => {\n const str = String(id);\n if (str.startsWith('\"') && str.endsWith('\"')) {\n return str;\n }\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n};\n\nexport async function getDuckTables(schema = 'main'): Promise<string[]> {\n const {conn} = await getDuckDb();\n const tablesResults = await conn.query(\n `SELECT * FROM information_schema.tables \n WHERE table_schema = '${schema}'\n ORDER BY table_name`,\n );\n const tableNames: string[] = [];\n for (let i = 0; i < tablesResults.numRows; i++) {\n tableNames.push(tablesResults.getChild('table_name')?.get(i));\n }\n return tableNames;\n}\n\nexport async function getDuckTableSchema(\n tableName: string,\n schema = 'main',\n): Promise<DataTable> {\n const {conn} = await getDuckDb();\n const describeResults = await conn.query(`DESCRIBE ${schema}.${tableName}`);\n const columnNames = describeResults.getChild('column_name');\n const columnTypes = describeResults.getChild('column_type');\n const columns: TableColumn[] = [];\n for (let di = 0; di < describeResults.numRows; di++) {\n const columnName = columnNames?.get(di);\n const columnType = columnTypes?.get(di);\n columns.push({name: columnName, type: columnType});\n }\n return {\n tableName,\n columns,\n // Costly to get the row count for large tables\n // rowCount: getColValAsNumber(\n // await conn.query(`SELECT COUNT(*) FROM ${schema}.${tableName}`),\n // ),\n };\n}\n\nexport async function getDuckTableSchemas(\n schema = 'main',\n): Promise<DataTable[]> {\n const tableNames = await getDuckTables(schema);\n const tablesInfo: DataTable[] = [];\n for (const tableName of tableNames) {\n tablesInfo.push(await getDuckTableSchema(tableName, schema));\n }\n return tablesInfo;\n}\n\nexport async function checkTableExists(\n tableName: string,\n schema = 'main',\n): Promise<boolean> {\n const {conn} = await getDuckDb();\n const res = await conn.query(\n `SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '${schema}' AND table_name = '${tableName}'`,\n );\n return getColValAsNumber(res) > 0;\n}\n\nexport async function dropAllTables(schema?: string): Promise<void> {\n try {\n const {conn} = await getDuckDb();\n if (schema && schema !== 'main') {\n await conn.query(`DROP SCHEMA IF EXISTS ${schema} CASCADE`);\n } else {\n const res = await conn.query(\n `SELECT table_name, table_schema, table_type FROM information_schema.tables${\n schema ? ` WHERE table_schema = '${schema}'` : ''\n }`,\n );\n const schemasCol = res.getChild('table_schema');\n const tableNamesCol = res.getChild('table_name');\n const tableTypesCol = res.getChild('table_type');\n for (let i = 0; i < res.numRows; i++) {\n try {\n const schemaName = schemasCol?.get(i);\n const tableName = tableNamesCol?.get(i);\n const tableType = tableTypesCol?.get(i);\n if (tableName) {\n const query = `DROP ${\n tableType === 'VIEW' ? 'VIEW' : 'TABLE'\n } IF EXISTS ${schemaName}.${tableName}`;\n await conn.query(query);\n }\n } catch (err) {\n console.error(err);\n }\n }\n }\n } catch (err) {\n console.error(err);\n }\n}\n\nexport async function dropTable(tableName: string): Promise<void> {\n const {conn} = await getDuckDb();\n await conn.query(`DROP TABLE IF EXISTS ${tableName};`);\n}\n\nexport async function dropFile(fname: string): Promise<void> {\n const {db} = await getDuckDb();\n db.dropFile(fname);\n}\n\nexport async function dropAllFiles(): Promise<void> {\n const {db} = await getDuckDb();\n db.dropFiles();\n}\n"]}
@@ -0,0 +1,200 @@
1
+ import * as arrow from 'apache-arrow';
2
+ import { z } from 'zod';
3
+ /**
4
+ * A wrapper interface that exposes the underlying Arrow table,
5
+ * a typed row accessor, and the number of rows.
6
+ */
7
+ export interface UseSqlQueryResult<T> {
8
+ /** The underlying Arrow table */
9
+ arrowTable: arrow.Table;
10
+ /** Returns a typed row at the specified index by converting on demand */
11
+ getRow(index: number): T;
12
+ /** Number of rows in the table */
13
+ length: number;
14
+ /** Returns an iterator that yields each row in the table */
15
+ rows(): IterableIterator<T>;
16
+ /** Returns an array containing all rows in the table */
17
+ toArray(): T[];
18
+ }
19
+ /**
20
+ * @deprecated Use UseSqlQueryResult instead
21
+ */
22
+ export type DuckDbQueryResult<T> = UseSqlQueryResult<T>;
23
+ /**
24
+ * A React hook for executing SQL queries with automatic state management.
25
+ * Provides two ways to ensure type safety:
26
+ * 1. Using TypeScript types (compile-time safety only)
27
+ * 2. Using Zod schemas (both compile-time and runtime validation)
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * // Option 1: Using TypeScript types (faster, no runtime validation)
32
+ * interface User {
33
+ * id: number;
34
+ * name: string;
35
+ * email: string;
36
+ * }
37
+ *
38
+ * const {data, isLoading, error} = useSql<User>({
39
+ * query: 'SELECT id, name, email FROM users'
40
+ * });
41
+ *
42
+ * // Option 2: Using Zod schema (slower but with runtime validation)
43
+ * const userSchema = z.object({
44
+ * id: z.number(),
45
+ * name: z.string(),
46
+ * email: z.string().email(),
47
+ * createdAt: z.string().transform(str => new Date(str)) // Transform string to Date
48
+ * });
49
+ *
50
+ * const {data: validatedData, isLoading, error} = useSql(
51
+ * userSchema,
52
+ * {query: 'SELECT id, name, email, created_at as createdAt FROM users'}
53
+ * );
54
+ *
55
+ * // Error handling is the same for both approaches
56
+ * if (isLoading) return <div>Loading...</div>;
57
+ * if (error) {
58
+ * // With Zod, you can catch validation errors specifically
59
+ * if (error instanceof z.ZodError) {
60
+ * return <div>Validation Error: {error.errors[0].message}</div>;
61
+ * }
62
+ * return <div>Error: {error.message}</div>;
63
+ * }
64
+ * if (!data) return null;
65
+ *
66
+ * // Accessing data works the same way for both approaches
67
+ * // Iterate through rows using the rows() iterator (recommended)
68
+ * for (const user of data.rows()) {
69
+ * console.log(user.name, user.email);
70
+ * }
71
+ *
72
+ * // Traditional for loop with index access
73
+ * for (let i = 0; i < data.length; i++) {
74
+ * const user = data.getRow(i);
75
+ * console.log(`User ${i}: ${user.name} (${user.email})`);
76
+ * }
77
+ *
78
+ * // With Zod schema, transformed fields are available
79
+ * // for (const user of validatedData.rows()) {
80
+ * // console.log(`Created: ${user.createdAt.toISOString()}`); // createdAt is a Date object
81
+ * // }
82
+ *
83
+ * // Get all rows as an array
84
+ * const allUsers = data.toArray();
85
+ * ```
86
+ *
87
+ * ## Performance and Advanced Operations
88
+ *
89
+ * There are several ways to access data with different performance characteristics:
90
+ *
91
+ * ### 1. Typed Row Access (getRow, rows(), toArray())
92
+ * - Provides type safety and validation
93
+ * - Converts data to JavaScript objects
94
+ * - Slower for large datasets due to object creation and validation
95
+ * - Zod validation adds additional overhead but ensures data correctness
96
+ *
97
+ * ```typescript
98
+ * // Iterate through all rows with the iterator (recommended)
99
+ * for (const row of data.rows()) {
100
+ * console.log(row.name);
101
+ * }
102
+ *
103
+ * // Access rows with a traditional for loop
104
+ * for (let i = 0; i < data.length; i++) {
105
+ * const row = data.getRow(i);
106
+ * console.log(`Row ${i}: ${row.name}`);
107
+ * }
108
+ *
109
+ * // Get all rows as an array
110
+ * const allRows = data.toArray();
111
+ * ```
112
+ *
113
+ * ### 2. Direct Arrow Table Access
114
+ * - Much faster for large datasets
115
+ * - Columnar access is more efficient for analytics
116
+ * - No type safety or validation
117
+ *
118
+ * ```typescript
119
+ * // For performance-critical operations with large datasets:
120
+ * const nameColumn = data.arrowTable.getChild('name');
121
+ * const emailColumn = data.arrowTable.getChild('email');
122
+ *
123
+ * // Fast columnar iteration (no object creation)
124
+ * for (let i = 0; i < data.length; i++) {
125
+ * console.log(nameColumn.get(i), emailColumn.get(i));
126
+ * }
127
+ *
128
+ * // Note: For filtering data, it's most efficient to use SQL in your query
129
+ * // const { data } = useSql<User>({
130
+ * // query: "SELECT * FROM users WHERE age > 30"
131
+ * // });
132
+ * ```
133
+ *
134
+ * ### 3. Using Flechette for Advanced Operations
135
+ *
136
+ * For more advanced Arrow operations, consider using [Flechette](https://idl.uw.edu/flechette/),
137
+ * a faster and lighter alternative to the standard Arrow JS implementation.
138
+ *
139
+ * ```typescript
140
+ * // Example using Flechette with SQL query results
141
+ * import { tableFromIPC } from '@uwdata/flechette';
142
+ *
143
+ * // Convert Arrow table to Flechette table
144
+ * // Note: This serialization step creates a copy of the data
145
+ * const serializedData = data.arrowTable.serialize();
146
+ * const flechetteTable = tableFromIPC(serializedData);
147
+ *
148
+ * // Extract all columns into a { name: array, ... } object
149
+ * const columns = flechetteTable.toColumns();
150
+ *
151
+ * // Create a new table with a selected subset of columns
152
+ * const subtable = flechetteTable.select(['name', 'email']);
153
+ *
154
+ * // Convert to array of objects with customization options
155
+ * const objects = flechetteTable.toArray({
156
+ * useDate: true, // Convert timestamps to Date objects
157
+ * useMap: true // Create Map objects for key-value pairs
158
+ * });
159
+ *
160
+ * // For large datasets, consider memory management
161
+ * // Once you're done with the Arrow data, you can free the memory
162
+ * serializedData = null; // Allow garbage collection of the serialized data
163
+ * ```
164
+ *
165
+ * Flechette provides several advantages:
166
+ * - Better performance (1.3-1.6x faster value iteration, 7-11x faster row object extraction)
167
+ * - Smaller footprint (~43k minified vs 163k for Arrow JS)
168
+ * - Support for additional data types (including decimal-to-number conversion)
169
+ * - More flexible data value conversion options
170
+ *
171
+ * @template Row The TypeScript type for each row in the result
172
+ * @param options Configuration object containing the query and execution control
173
+ * @returns Object containing the query result, loading state, and any error
174
+ *
175
+ * @template Schema The Zod schema type that defines the shape and validation of each row
176
+ * @param schema A Zod schema that defines the expected shape and validation rules for each row
177
+ * @param options Configuration object containing the query and execution control
178
+ * @returns Object containing the validated query result, loading state, and any error
179
+ */
180
+ export declare function useSql<Row>(options: {
181
+ query: string;
182
+ enabled?: boolean;
183
+ }): {
184
+ data: UseSqlQueryResult<Row> | undefined;
185
+ error: Error | null;
186
+ isLoading: boolean;
187
+ };
188
+ export declare function useSql<Schema extends z.ZodType>(schema: Schema, options: {
189
+ query: string;
190
+ enabled?: boolean;
191
+ }): {
192
+ data: UseSqlQueryResult<z.infer<Schema>> | undefined;
193
+ error: Error | null;
194
+ isLoading: boolean;
195
+ };
196
+ /**
197
+ * @deprecated Use useSql instead
198
+ */
199
+ export declare const useDuckDbQuery: typeof useSql;
200
+ //# sourceMappingURL=useSql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSql.d.ts","sourceRoot":"","sources":["../src/useSql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,iCAAiC;IACjC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC;IACxB,yEAAyE;IACzE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC;IACzB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,IAAI,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC5B,wDAAwD;IACxD,OAAO,IAAI,CAAC,EAAE,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;AA+CxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4JG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAC,GAAG;IACxE,IAAI,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACzC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,EAC7C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACP,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACA;IACD,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IACrD,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAuEF;;GAEG;AACH,eAAO,MAAM,cAAc,eAAS,CAAC"}
@@ -23,12 +23,24 @@ function createTypedRowAccessor({ arrowTable, validate, }) {
23
23
  }
24
24
  return row;
25
25
  },
26
+ *rows() {
27
+ for (let i = 0; i < this.length; i++) {
28
+ yield this.getRow(i);
29
+ }
30
+ },
31
+ toArray() {
32
+ const result = [];
33
+ for (let i = 0; i < this.length; i++) {
34
+ result.push(this.getRow(i));
35
+ }
36
+ return result;
37
+ },
26
38
  };
27
39
  }
28
40
  /**
29
- * Implementation of useDuckDbQuery that handles both overloads
41
+ * Implementation of useSql that handles both overloads
30
42
  */
31
- export function useDuckDbQuery(schemaOrOptions, maybeOptions) {
43
+ export function useSql(schemaOrOptions, maybeOptions) {
32
44
  // Determine if we're using the schema overload
33
45
  const hasSchema = maybeOptions !== undefined;
34
46
  const options = hasSchema
@@ -80,4 +92,8 @@ export function useDuckDbQuery(schemaOrOptions, maybeOptions) {
80
92
  isLoading,
81
93
  };
82
94
  }
83
- //# sourceMappingURL=useDuckDbQuery.js.map
95
+ /**
96
+ * @deprecated Use useSql instead
97
+ */
98
+ export const useDuckDbQuery = useSql;
99
+ //# sourceMappingURL=useSql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSql.js","sourceRoot":"","sources":["../src/useSql.ts"],"names":[],"mappings":"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","sourcesContent":["import * as arrow from 'apache-arrow';\nimport {useEffect, useState} from 'react';\nimport {getDuckDb} from './useDuckDb';\nimport {z} from 'zod';\n\n/**\n * A wrapper interface that exposes the underlying Arrow table,\n * a typed row accessor, and the number of rows.\n */\nexport interface UseSqlQueryResult<T> {\n /** The underlying Arrow table */\n arrowTable: arrow.Table;\n /** Returns a typed row at the specified index by converting on demand */\n getRow(index: number): T;\n /** Number of rows in the table */\n length: number;\n /** Returns an iterator that yields each row in the table */\n rows(): IterableIterator<T>;\n /** Returns an array containing all rows in the table */\n toArray(): T[];\n}\n\n/**\n * @deprecated Use UseSqlQueryResult instead\n */\nexport type DuckDbQueryResult<T> = UseSqlQueryResult<T>;\n\n/**\n * Creates a row accessor wrapper around an Arrow table that provides typed row access.\n */\nfunction createTypedRowAccessor<T>({\n arrowTable,\n validate,\n}: {\n arrowTable: arrow.Table;\n validate?: (row: unknown) => T;\n}): UseSqlQueryResult<T> {\n return {\n arrowTable,\n get length() {\n return arrowTable.numRows;\n },\n getRow(index: number): T {\n const row: Record<string, unknown> = {};\n arrowTable.schema.fields.forEach((field: arrow.Field) => {\n const column = arrowTable.getChild(field.name);\n if (column) {\n row[field.name] = column.get(index);\n }\n });\n\n // If a validator is provided, use it to validate/parse the row\n if (validate) {\n return validate(row);\n }\n return row as T;\n },\n *rows(): IterableIterator<T> {\n for (let i = 0; i < this.length; i++) {\n yield this.getRow(i);\n }\n },\n toArray(): T[] {\n const result: T[] = [];\n for (let i = 0; i < this.length; i++) {\n result.push(this.getRow(i));\n }\n return result;\n },\n };\n}\n\n/**\n * A React hook for executing SQL queries with automatic state management.\n * Provides two ways to ensure type safety:\n * 1. Using TypeScript types (compile-time safety only)\n * 2. Using Zod schemas (both compile-time and runtime validation)\n *\n * @example\n * ```typescript\n * // Option 1: Using TypeScript types (faster, no runtime validation)\n * interface User {\n * id: number;\n * name: string;\n * email: string;\n * }\n *\n * const {data, isLoading, error} = useSql<User>({\n * query: 'SELECT id, name, email FROM users'\n * });\n *\n * // Option 2: Using Zod schema (slower but with runtime validation)\n * const userSchema = z.object({\n * id: z.number(),\n * name: z.string(),\n * email: z.string().email(),\n * createdAt: z.string().transform(str => new Date(str)) // Transform string to Date\n * });\n *\n * const {data: validatedData, isLoading, error} = useSql(\n * userSchema,\n * {query: 'SELECT id, name, email, created_at as createdAt FROM users'}\n * );\n *\n * // Error handling is the same for both approaches\n * if (isLoading) return <div>Loading...</div>;\n * if (error) {\n * // With Zod, you can catch validation errors specifically\n * if (error instanceof z.ZodError) {\n * return <div>Validation Error: {error.errors[0].message}</div>;\n * }\n * return <div>Error: {error.message}</div>;\n * }\n * if (!data) return null;\n *\n * // Accessing data works the same way for both approaches\n * // Iterate through rows using the rows() iterator (recommended)\n * for (const user of data.rows()) {\n * console.log(user.name, user.email);\n * }\n *\n * // Traditional for loop with index access\n * for (let i = 0; i < data.length; i++) {\n * const user = data.getRow(i);\n * console.log(`User ${i}: ${user.name} (${user.email})`);\n * }\n *\n * // With Zod schema, transformed fields are available\n * // for (const user of validatedData.rows()) {\n * // console.log(`Created: ${user.createdAt.toISOString()}`); // createdAt is a Date object\n * // }\n *\n * // Get all rows as an array\n * const allUsers = data.toArray();\n * ```\n *\n * ## Performance and Advanced Operations\n *\n * There are several ways to access data with different performance characteristics:\n *\n * ### 1. Typed Row Access (getRow, rows(), toArray())\n * - Provides type safety and validation\n * - Converts data to JavaScript objects\n * - Slower for large datasets due to object creation and validation\n * - Zod validation adds additional overhead but ensures data correctness\n *\n * ```typescript\n * // Iterate through all rows with the iterator (recommended)\n * for (const row of data.rows()) {\n * console.log(row.name);\n * }\n *\n * // Access rows with a traditional for loop\n * for (let i = 0; i < data.length; i++) {\n * const row = data.getRow(i);\n * console.log(`Row ${i}: ${row.name}`);\n * }\n *\n * // Get all rows as an array\n * const allRows = data.toArray();\n * ```\n *\n * ### 2. Direct Arrow Table Access\n * - Much faster for large datasets\n * - Columnar access is more efficient for analytics\n * - No type safety or validation\n *\n * ```typescript\n * // For performance-critical operations with large datasets:\n * const nameColumn = data.arrowTable.getChild('name');\n * const emailColumn = data.arrowTable.getChild('email');\n *\n * // Fast columnar iteration (no object creation)\n * for (let i = 0; i < data.length; i++) {\n * console.log(nameColumn.get(i), emailColumn.get(i));\n * }\n *\n * // Note: For filtering data, it's most efficient to use SQL in your query\n * // const { data } = useSql<User>({\n * // query: \"SELECT * FROM users WHERE age > 30\"\n * // });\n * ```\n *\n * ### 3. Using Flechette for Advanced Operations\n *\n * For more advanced Arrow operations, consider using [Flechette](https://idl.uw.edu/flechette/),\n * a faster and lighter alternative to the standard Arrow JS implementation.\n *\n * ```typescript\n * // Example using Flechette with SQL query results\n * import { tableFromIPC } from '@uwdata/flechette';\n *\n * // Convert Arrow table to Flechette table\n * // Note: This serialization step creates a copy of the data\n * const serializedData = data.arrowTable.serialize();\n * const flechetteTable = tableFromIPC(serializedData);\n *\n * // Extract all columns into a { name: array, ... } object\n * const columns = flechetteTable.toColumns();\n *\n * // Create a new table with a selected subset of columns\n * const subtable = flechetteTable.select(['name', 'email']);\n *\n * // Convert to array of objects with customization options\n * const objects = flechetteTable.toArray({\n * useDate: true, // Convert timestamps to Date objects\n * useMap: true // Create Map objects for key-value pairs\n * });\n *\n * // For large datasets, consider memory management\n * // Once you're done with the Arrow data, you can free the memory\n * serializedData = null; // Allow garbage collection of the serialized data\n * ```\n *\n * Flechette provides several advantages:\n * - Better performance (1.3-1.6x faster value iteration, 7-11x faster row object extraction)\n * - Smaller footprint (~43k minified vs 163k for Arrow JS)\n * - Support for additional data types (including decimal-to-number conversion)\n * - More flexible data value conversion options\n *\n * @template Row The TypeScript type for each row in the result\n * @param options Configuration object containing the query and execution control\n * @returns Object containing the query result, loading state, and any error\n *\n * @template Schema The Zod schema type that defines the shape and validation of each row\n * @param schema A Zod schema that defines the expected shape and validation rules for each row\n * @param options Configuration object containing the query and execution control\n * @returns Object containing the validated query result, loading state, and any error\n */\nexport function useSql<Row>(options: {query: string; enabled?: boolean}): {\n data: UseSqlQueryResult<Row> | undefined;\n error: Error | null;\n isLoading: boolean;\n};\n\nexport function useSql<Schema extends z.ZodType>(\n schema: Schema,\n options: {\n query: string;\n enabled?: boolean;\n },\n): {\n data: UseSqlQueryResult<z.infer<Schema>> | undefined;\n error: Error | null;\n isLoading: boolean;\n};\n\n/**\n * Implementation of useSql that handles both overloads\n */\nexport function useSql<Row, Schema extends z.ZodType = z.ZodType>(\n schemaOrOptions: Schema | {query: string; enabled?: boolean},\n maybeOptions?: {query: string; enabled?: boolean},\n) {\n // Determine if we're using the schema overload\n const hasSchema = maybeOptions !== undefined;\n const options = hasSchema\n ? maybeOptions\n : (schemaOrOptions as {query: string; enabled?: boolean});\n const schema = hasSchema ? (schemaOrOptions as Schema) : undefined;\n\n const [data, setData] = useState<UseSqlQueryResult<Row> | undefined>(\n undefined,\n );\n const [error, setError] = useState<Error | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n let isMounted = true;\n\n const fetchData = async () => {\n if (!options.enabled && options.enabled !== undefined) {\n return;\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n const duckDb = await getDuckDb();\n const result = await duckDb.conn.query(options.query);\n\n // Create a row accessor that optionally validates with the schema\n const rowAccessor = createTypedRowAccessor<Row>({\n arrowTable: result,\n validate: schema ? (row: unknown) => schema.parse(row) : undefined,\n });\n\n if (isMounted) {\n setData(rowAccessor);\n }\n } catch (err) {\n if (isMounted) {\n setError(err instanceof Error ? err : new Error(String(err)));\n }\n } finally {\n if (isMounted) {\n setIsLoading(false);\n }\n }\n };\n\n fetchData();\n\n return () => {\n isMounted = false;\n };\n }, [options.query, options.enabled]);\n\n return {\n data,\n error,\n isLoading,\n };\n}\n\n/**\n * @deprecated Use useSql instead\n */\nexport const useDuckDbQuery = useSql;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sqlrooms/duckdb",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "module": "dist/index.js",
@@ -19,12 +19,12 @@
19
19
  "access": "public"
20
20
  },
21
21
  "dependencies": {
22
- "@duckdb/duckdb-wasm": "^1.29.1-dev68.0",
22
+ "@duckdb/duckdb-wasm": "1.29.0",
23
23
  "apache-arrow": "^18.1.0",
24
24
  "zod": "^3.24.1"
25
25
  },
26
26
  "devDependencies": {
27
- "@sqlrooms/jest-config": "0.5.0",
27
+ "@sqlrooms/jest-config": "0.6.0",
28
28
  "@types/jest": "^29.5.12",
29
29
  "jest": "^29.7.0",
30
30
  "ts-jest": "^29.1.2"
@@ -38,5 +38,5 @@
38
38
  "test": "jest",
39
39
  "test:watch": "jest --watch"
40
40
  },
41
- "gitHead": "2a27ef8a774f934c8150dce57aac22699fb6d22f"
41
+ "gitHead": "f46dfe6b5d135e1a039b49b3ba71cda7150eab0f"
42
42
  }
@@ -1,106 +0,0 @@
1
- import * as arrow from 'apache-arrow';
2
- import { z } from 'zod';
3
- /**
4
- * A wrapper interface that exposes the underlying Arrow table,
5
- * a typed row accessor, and the number of rows.
6
- */
7
- export interface DuckDbQueryResult<T> {
8
- /** The underlying Arrow table */
9
- arrowTable: arrow.Table;
10
- /** Returns a typed row at the specified index by converting on demand */
11
- getRow(index: number): T;
12
- /** Number of rows in the table */
13
- length: number;
14
- }
15
- /**
16
- * A React hook for executing DuckDB queries with automatic state management.
17
- * This version provides type safety through TypeScript types but no runtime validation.
18
- *
19
- * @example
20
- * ```typescript
21
- * interface User {
22
- * id: number;
23
- * name: string;
24
- * email: string;
25
- * }
26
- *
27
- * const {data, isLoading, error} = useDuckDbQuery<User>({
28
- * query: 'SELECT id, name, email FROM users'
29
- * });
30
- *
31
- * if (isLoading) return <div>Loading...</div>;
32
- * if (error) return <div>Error: {error.message}</div>;
33
- * if (!data) return null;
34
- *
35
- * // Access typed rows
36
- * const firstUser = data.getRow(0); // Type: User
37
- * console.log(firstUser.name);
38
- * ```
39
- *
40
- * @template Row The TypeScript type for each row in the result
41
- * @param options Configuration object containing the query and execution control
42
- * @returns Object containing the query result, loading state, and any error
43
- */
44
- export declare function useDuckDbQuery<Row>(options: {
45
- query: string;
46
- enabled?: boolean;
47
- }): {
48
- data: DuckDbQueryResult<Row> | undefined;
49
- error: Error | null;
50
- isLoading: boolean;
51
- };
52
- /**
53
- * A React hook for executing DuckDB queries with automatic state management and runtime validation.
54
- * This version uses Zod schemas to provide both compile-time and runtime type safety.
55
- *
56
- * Key features:
57
- * - Runtime validation of each row as it's accessed
58
- * - Automatic TypeScript type inference from the Zod schema
59
- * - Validation errors if the data doesn't match the expected shape
60
- * - Ability to transform data during validation
61
- *
62
- * @example
63
- * ```typescript
64
- * // Define a schema for your data
65
- * const userSchema = z.object({
66
- * id: z.number(),
67
- * name: z.string(),
68
- * email: z.string().email(),
69
- * createdAt: z.string().transform(str => new Date(str)) // Transform string to Date
70
- * });
71
- *
72
- * // The type is automatically inferred from the schema
73
- * const {data, isLoading, error} = useDuckDbQuery(
74
- * userSchema,
75
- * {query: 'SELECT id, name, email, created_at FROM users'}
76
- * );
77
- *
78
- * if (isLoading) return <div>Loading...</div>;
79
- * if (error) {
80
- * // Error will be a ZodError if validation fails
81
- * if (error instanceof z.ZodError) {
82
- * return <div>Validation Error: {error.errors[0].message}</div>;
83
- * }
84
- * return <div>Error: {error.message}</div>;
85
- * }
86
- * if (!data) return null;
87
- *
88
- * // Rows are validated and transformed according to the schema
89
- * const user = data.getRow(0);
90
- * console.log(user.createdAt.toISOString()); // createdAt is now a Date object
91
- * ```
92
- *
93
- * @template Schema The Zod schema type that defines the shape and validation of each row
94
- * @param schema A Zod schema that defines the expected shape and validation rules for each row
95
- * @param options Configuration object containing the query and execution control
96
- * @returns Object containing the validated query result, loading state, and any error
97
- */
98
- export declare function useDuckDbQuery<Schema extends z.ZodType>(schema: Schema, options: {
99
- query: string;
100
- enabled?: boolean;
101
- }): {
102
- data: DuckDbQueryResult<z.infer<Schema>> | undefined;
103
- error: Error | null;
104
- isLoading: boolean;
105
- };
106
- //# sourceMappingURL=useDuckDbQuery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useDuckDbQuery.d.ts","sourceRoot":"","sources":["../src/useDuckDbQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,iCAAiC;IACjC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC;IACxB,yEAAyE;IACzE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC;IACzB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAmCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG;IACF,IAAI,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACzC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,cAAc,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,EACrD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACP,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACA;IACD,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IACrD,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useDuckDbQuery.js","sourceRoot":"","sources":["../src/useDuckDbQuery.ts"],"names":[],"mappings":"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"}