@sqlrooms/duckdb 0.29.0-rc.0 → 0.29.0-rc.10

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.
Files changed (40) hide show
  1. package/LICENSE.md +2 -1
  2. package/README.md +84 -4
  3. package/dist/DuckDbSlice.d.ts +56 -14
  4. package/dist/DuckDbSlice.d.ts.map +1 -1
  5. package/dist/DuckDbSlice.js +299 -164
  6. package/dist/DuckDbSlice.js.map +1 -1
  7. package/dist/connectors/WasmDuckDbConnector.d.ts.map +1 -1
  8. package/dist/connectors/WasmDuckDbConnector.js +27 -0
  9. package/dist/connectors/WasmDuckDbConnector.js.map +1 -1
  10. package/dist/connectors/WebSocketDuckDbConnector.d.ts +23 -0
  11. package/dist/connectors/WebSocketDuckDbConnector.d.ts.map +1 -1
  12. package/dist/connectors/WebSocketDuckDbConnector.js +62 -0
  13. package/dist/connectors/WebSocketDuckDbConnector.js.map +1 -1
  14. package/dist/connectors/createDuckDbConnector.d.ts +1 -1
  15. package/dist/connectors/createDuckDbConnector.d.ts.map +1 -1
  16. package/dist/connectors/createDuckDbConnector.js.map +1 -1
  17. package/dist/index.d.ts +8 -5
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +6 -3
  20. package/dist/index.js.map +1 -1
  21. package/dist/loadTableSchemas.d.ts +40 -0
  22. package/dist/loadTableSchemas.d.ts.map +1 -0
  23. package/dist/loadTableSchemas.js +260 -0
  24. package/dist/loadTableSchemas.js.map +1 -0
  25. package/dist/use-copy-as-tsv.d.ts +13 -0
  26. package/dist/use-copy-as-tsv.d.ts.map +1 -0
  27. package/dist/use-copy-as-tsv.js +68 -0
  28. package/dist/use-copy-as-tsv.js.map +1 -0
  29. package/dist/use-export-to-csv.d.ts +5 -0
  30. package/dist/use-export-to-csv.d.ts.map +1 -0
  31. package/dist/{exportToCsv.js → use-export-to-csv.js} +1 -1
  32. package/dist/use-export-to-csv.js.map +1 -0
  33. package/dist/useDataTable.d.ts +14 -0
  34. package/dist/useDataTable.d.ts.map +1 -0
  35. package/dist/useDataTable.js +21 -0
  36. package/dist/useDataTable.js.map +1 -0
  37. package/package.json +27 -27
  38. package/dist/exportToCsv.d.ts +0 -4
  39. package/dist/exportToCsv.d.ts.map +0 -1
  40. package/dist/exportToCsv.js.map +0 -1
package/LICENSE.md CHANGED
@@ -1,6 +1,7 @@
1
1
  MIT License
2
2
 
3
- Copyright 2025 SQLRooms Contributors
3
+ Copyright 2024-2026 SQLRooms Contributors
4
+ Copyright Vis.gl contributors
4
5
 
5
6
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
7
 
package/README.md CHANGED
@@ -4,7 +4,7 @@ A powerful wrapper around DuckDB-WASM that provides React hooks and utilities fo
4
4
 
5
5
  ### React Integration & Type Safety
6
6
 
7
- - **React Hooks**: Seamless integration with React applications via `useSql`
7
+ - **React Hooks**: Seamless integration with React applications via `useSql` and `useDataTable`
8
8
  - **Runtime Validation**: Optional Zod schema validation for query results with type transformations
9
9
  - **Typed Row Accessors**: Type-safe row access with validation and multiple iteration methods
10
10
 
@@ -57,6 +57,55 @@ function UserList() {
57
57
 
58
58
  For more information and examples on using the `useSql` hook, see the [useSql API documentation](/api/duckdb/functions/useSql).
59
59
 
60
+ ### Monitoring WebSocket DuckDB Connections
61
+
62
+ `createWebSocketDuckDbConnector()` exposes the persistent WebSocket lifecycle
63
+ through `connectionStatus`, `subscribeConnectionStatus()`, and the optional
64
+ `onConnectionStatusChange` callback. Use this for live UI affordances such as
65
+ lost-connection dialogs. Call `reconnect()` to reopen the socket and rerun the
66
+ connector initialization SQL without destroying the connector instance.
67
+
68
+ ```tsx
69
+ import {createWebSocketDuckDbConnector} from '@sqlrooms/duckdb';
70
+
71
+ const connector = createWebSocketDuckDbConnector({
72
+ wsUrl: 'ws://localhost:4000',
73
+ onConnectionStatusChange: (status) => {
74
+ console.log('DuckDB WebSocket status:', status);
75
+ },
76
+ });
77
+
78
+ const unsubscribe = connector.subscribeConnectionStatus((status) => {
79
+ if (status === 'disconnected') {
80
+ console.warn('DuckDB WebSocket disconnected');
81
+ }
82
+ });
83
+
84
+ await connector.reconnect();
85
+ ```
86
+
87
+ ### Looking up Table Metadata
88
+
89
+ Use `useDataTable()` in React components or `db.findTable()` from the room
90
+ store. String references are parsed like SQL identifiers, so use quotes for
91
+ literal dots in table names.
92
+
93
+ ```tsx
94
+ import {useDataTable} from '@sqlrooms/duckdb';
95
+
96
+ function TableColumns() {
97
+ const table = useDataTable('"memory"."main"."earthquakes"');
98
+
99
+ return (
100
+ <ul>
101
+ {table?.columns.map((column) => (
102
+ <li key={column.name}>{column.name}</li>
103
+ ))}
104
+ </ul>
105
+ );
106
+ }
107
+ ```
108
+
60
109
  ### Using Zod for Runtime Validation
61
110
 
62
111
  ```tsx
@@ -207,11 +256,12 @@ function DatabaseManager() {
207
256
  ### Working with Qualified Table Names
208
257
 
209
258
  ```tsx
210
- import {makeQualifiedTableName} from '@sqlrooms/duckdb';
259
+ import {quoteTableReference, resolveTableReference} from '@sqlrooms/duckdb';
211
260
  import {useRoomStore} from './store';
212
261
  import {Button} from '@sqlrooms/ui';
213
262
 
214
263
  function QualifiedTableOps() {
264
+ const qualifyTableName = useRoomStore((state) => state.db.qualifyTableName);
215
265
  const createTableFromQuery = useRoomStore(
216
266
  (state) => state.db.createTableFromQuery,
217
267
  );
@@ -219,14 +269,21 @@ function QualifiedTableOps() {
219
269
  const checkTableExists = useRoomStore((state) => state.db.checkTableExists);
220
270
 
221
271
  const run = async () => {
222
- // Support for database.schema.table naming
223
- const qualifiedTable = makeQualifiedTableName({
272
+ // Store-aware qualification knows which database is the default.
273
+ const qualifiedTable = qualifyTableName({
224
274
  database: 'mydb',
225
275
  schema: 'public',
226
276
  table: 'users',
227
277
  });
278
+ // toString() is the canonical portable table ID; toFullString() includes
279
+ // the database when explicit catalog qualification is needed.
280
+ const tableSql = quoteTableReference(qualifiedTable.toString());
281
+ const resolved = resolveTableReference([{table: qualifiedTable}], 'users');
228
282
 
229
283
  await createTableFromQuery(qualifiedTable, 'SELECT * FROM source_table');
284
+ console.log('Quoted table reference:', tableSql);
285
+ console.log('Fully qualified reference:', qualifiedTable.toFullString());
286
+ console.log('Resolved table:', resolved.table?.table.toString());
230
287
  const tableExists = await checkTableExists(qualifiedTable);
231
288
  console.log('Table exists after create:', tableExists);
232
289
  await dropTable(qualifiedTable);
@@ -236,6 +293,29 @@ function QualifiedTableOps() {
236
293
  }
237
294
  ```
238
295
 
296
+ ### Loading the Schema Catalog
297
+
298
+ Use `loadSchemaCatalog()` when you need the database/schema/table hierarchy,
299
+ including empty schemas and attached databases whose `main` schema has no
300
+ tables yet. The catalog filter receives typed entries for databases, schemas,
301
+ and tables, so schema visibility does not depend on fake table names.
302
+ Related option and filter types are exported for callers that wrap these
303
+ helpers in their own APIs.
304
+
305
+ ```ts
306
+ import {
307
+ defaultLoadSchemaCatalogFilter,
308
+ loadSchemaCatalog,
309
+ } from '@sqlrooms/duckdb';
310
+
311
+ const catalog = await loadSchemaCatalog(connector, {
312
+ filterFunction: (entry) =>
313
+ entry.type === 'schema' && entry.schema === 'scratch'
314
+ ? false
315
+ : defaultLoadSchemaCatalogFilter(entry),
316
+ });
317
+ ```
318
+
239
319
  ## Loading Data from Files
240
320
 
241
321
  ### Using Load Functions Directly
@@ -2,10 +2,23 @@ import { DataTable, DbSchemaNode, DuckDbConnector, QualifiedTableName, QueryHand
2
2
  import { BaseRoomStoreState } from '@sqlrooms/room-store';
3
3
  import * as arrow from 'apache-arrow';
4
4
  import { StateCreator } from 'zustand';
5
- export type SchemaAndDatabase = {
6
- schema?: string;
7
- database?: string;
8
- };
5
+ import { LoadSchemaCatalogFilterFunction, LoadTableSchemasFilter, LoadTableSchemasFilterFunction } from './loadTableSchemas';
6
+ /**
7
+ * Default predicate: which tables/schemas/databases appear in the data source panel.
8
+ * Hides `__sqlrooms_*` names and DuckDB's `temp` database.
9
+ */
10
+ export declare const defaultLoadTableSchemasFilter: LoadTableSchemasFilterFunction;
11
+ /**
12
+ * Factory returning {@link defaultLoadTableSchemasFilter}.
13
+ * Hides `__sqlrooms_*` names and DuckDB's `temp` database.
14
+ * Apps can pass {@link CreateDuckDbSliceProps.loadTableSchemasFilter} to add more rules.
15
+ */
16
+ export declare function createDefaultLoadTableSchemasFilter(): LoadTableSchemasFilterFunction;
17
+ /**
18
+ * Default catalog visibility predicate for the data source panel.
19
+ * Hides SQLRooms internal objects and DuckDB's temporary database catalog.
20
+ */
21
+ export declare const defaultLoadSchemaCatalogFilter: LoadSchemaCatalogFilterFunction;
9
22
  /**
10
23
  * State and actions for the DuckDB slice
11
24
  */
@@ -21,6 +34,13 @@ export type DuckDbSliceState = {
21
34
  schema: string;
22
35
  currentSchema: string | undefined;
23
36
  currentDatabase: string | undefined;
37
+ /**
38
+ * Create a context-aware qualified table name.
39
+ *
40
+ * String inputs are treated as table identifier names, not SQL references;
41
+ * use findTable() when resolving an existing table reference.
42
+ */
43
+ qualifyTableName(tableName: string | QualifiedTableNameInput): QualifiedTableName;
24
44
  /**
25
45
  * Cache of refreshed table schemas
26
46
  */
@@ -69,11 +89,9 @@ export type DuckDbSliceState = {
69
89
  /**
70
90
  * Load the schemas of the tables in the database.
71
91
  */
72
- loadTableSchemas(filter?: SchemaAndDatabase & {
73
- table?: string;
74
- }): Promise<DataTable[]>;
92
+ loadTableSchemas(filter?: LoadTableSchemasFilter): Promise<DataTable[]>;
75
93
  /**
76
- * @deprecated Use findTableByName instead
94
+ * @deprecated Use findTable instead
77
95
  */
78
96
  getTable(tableName: string): DataTable | undefined;
79
97
  /**
@@ -81,12 +99,18 @@ export type DuckDbSliceState = {
81
99
  */
82
100
  setTableRowCount(tableName: string | QualifiedTableName, rowCount: number): void;
83
101
  /**
84
- * Find a table by name in the last refreshed table schemas.
85
- * If no schema or database is provided, the table will be found in the current schema
86
- * and database (from last table schemas refresh).
87
- * @param tableName - The name of the table to find or a qualified table name.
102
+ * Find a table by reference in the last refreshed table schemas.
103
+ * String references are parsed as SQL identifiers, so dots separate
104
+ * database/schema/table segments unless quoted. If no schema or database is
105
+ * provided, the table is resolved in the current schema and database from
106
+ * the last schema refresh.
107
+ * @param tableName - The table reference to find.
88
108
  * @returns The table or undefined if not found.
89
109
  */
110
+ findTable(tableName: string | QualifiedTableName): DataTable | undefined;
111
+ /**
112
+ * @deprecated Use findTable instead
113
+ */
90
114
  findTableByName(tableName: string | QualifiedTableName): DataTable | undefined;
91
115
  /**
92
116
  * Refresh table schemas from the database.
@@ -128,7 +152,12 @@ export type DuckDbSliceState = {
128
152
  */
129
153
  checkTableExists: (tableName: string | QualifiedTableName) => Promise<boolean>;
130
154
  /**
131
- * Delete a table with optional schema and database
155
+ * Delete a table or view with optional schema and database.
156
+ * @param tableName - The name of the relation to delete (qualified or plain)
157
+ */
158
+ dropRelation: (tableName: string | QualifiedTableName) => Promise<void>;
159
+ /**
160
+ * Delete a table with optional schema and database.
132
161
  * @param tableName - The name of the table to delete (qualified or plain)
133
162
  */
134
163
  dropTable: (tableName: string | QualifiedTableName) => Promise<void>;
@@ -176,13 +205,25 @@ export type DuckDbSliceState = {
176
205
  }>;
177
206
  };
178
207
  };
208
+ type QualifiedTableNameInput = Pick<QualifiedTableName, 'database' | 'schema' | 'table' | 'defaultDatabase'>;
179
209
  export type CreateDuckDbSliceProps = {
180
210
  connector?: DuckDbConnector;
211
+ /**
212
+ * Optional table visibility filter.
213
+ * Defaults to {@link createDefaultLoadTableSchemasFilter}.
214
+ */
215
+ loadTableSchemasFilter?: LoadTableSchemasFilterFunction | null;
216
+ /**
217
+ * Optional catalog visibility filter for the data source panel.
218
+ * Defaults to {@link defaultLoadSchemaCatalogFilter}. When omitted, custom
219
+ * table filters still apply to table entries while schemas/databases use the default.
220
+ */
221
+ loadSchemaCatalogFilter?: LoadSchemaCatalogFilterFunction | null;
181
222
  };
182
223
  /**
183
224
  * Create a DuckDB slice for managing the connector
184
225
  */
185
- export declare function createDuckDbSlice({ connector, }?: CreateDuckDbSliceProps): StateCreator<DuckDbSliceState>;
226
+ export declare function createDuckDbSlice({ connector, loadTableSchemasFilter, loadSchemaCatalogFilter, }?: CreateDuckDbSliceProps): StateCreator<DuckDbSliceState>;
186
227
  /**
187
228
  * @internal
188
229
  * Select values from the room store that includes the DuckDB slice.
@@ -195,4 +236,5 @@ export declare function createDuckDbSlice({ connector, }?: CreateDuckDbSliceProp
195
236
  * @returns The selected value of type `T`
196
237
  */
197
238
  export declare function useStoreWithDuckDb<T>(selector: (state: BaseRoomStoreState & DuckDbSliceState) => T): T;
239
+ export {};
198
240
  //# sourceMappingURL=DuckDbSlice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DuckDbSlice.d.ts","sourceRoot":"","sources":["../src/DuckDbSlice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DuckDbSlice.d.ts","sourceRoot":"","sources":["../src/DuckDbSlice.ts"],"names":[],"mappings":"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"}