@dotdo/postgres 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +73 -1
- package/dist/client/index.d.ts +47 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +47 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/postgres-client.d.ts +273 -0
- package/dist/client/postgres-client.d.ts.map +1 -0
- package/dist/client/postgres-client.js +389 -0
- package/dist/client/postgres-client.js.map +1 -0
- package/dist/client/types.d.ts +167 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +7 -0
- package/dist/client/types.js.map +1 -0
- package/dist/do/index.d.ts +18 -0
- package/dist/do/index.d.ts.map +1 -0
- package/dist/do/index.js +18 -0
- package/dist/do/index.js.map +1 -0
- package/dist/do/postgres.d.ts +110 -0
- package/dist/do/postgres.d.ts.map +1 -0
- package/dist/do/postgres.js +266 -0
- package/dist/do/postgres.js.map +1 -0
- package/dist/do/sql.d.ts +92 -0
- package/dist/do/sql.d.ts.map +1 -0
- package/dist/do/sql.js +204 -0
- package/dist/do/sql.js.map +1 -0
- package/dist/index.d.ts +25 -30
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -30
- package/dist/index.js.map +1 -1
- package/dist/mcp/binding.d.ts +47 -0
- package/dist/mcp/binding.d.ts.map +1 -0
- package/dist/mcp/binding.js +183 -0
- package/dist/mcp/binding.js.map +1 -0
- package/dist/mcp/index.d.ts +92 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +91 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +62 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +278 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +58 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +356 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/types.d.ts +139 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +7 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/pglite/workers-pglite.d.ts +13 -4
- package/dist/pglite/workers-pglite.d.ts.map +1 -1
- package/dist/pglite/workers-pglite.js +110 -5
- package/dist/pglite/workers-pglite.js.map +1 -1
- package/dist/pglite-assets/pglite.data +0 -0
- package/dist/pglite-assets/pglite.wasm +0 -0
- package/dist/worker/auth.d.ts.map +1 -1
- package/dist/worker/auth.js +16 -6
- package/dist/worker/auth.js.map +1 -1
- package/dist/worker/background-pglite-manager.d.ts +243 -0
- package/dist/worker/background-pglite-manager.d.ts.map +1 -0
- package/dist/worker/background-pglite-manager.js +528 -0
- package/dist/worker/background-pglite-manager.js.map +1 -0
- package/dist/worker/do-pglite-manager.d.ts +77 -0
- package/dist/worker/do-pglite-manager.d.ts.map +1 -1
- package/dist/worker/do-pglite-manager.js +189 -12
- package/dist/worker/do-pglite-manager.js.map +1 -1
- package/dist/worker/entry.d.ts.map +1 -1
- package/dist/worker/entry.js +108 -26
- package/dist/worker/entry.js.map +1 -1
- package/dist/worker/index.d.ts +7 -1
- package/dist/worker/index.d.ts.map +1 -1
- package/dist/worker/index.js +19 -1
- package/dist/worker/index.js.map +1 -1
- package/dist/worker/lazy-pglite-manager.d.ts +242 -0
- package/dist/worker/lazy-pglite-manager.d.ts.map +1 -0
- package/dist/worker/lazy-pglite-manager.js +463 -0
- package/dist/worker/lazy-pglite-manager.js.map +1 -0
- package/package.json +20 -6
- package/src/client/index.ts +61 -0
- package/src/client/postgres-client.ts +442 -0
- package/src/client/types.ts +211 -0
- package/src/do/index.ts +18 -0
- package/src/do/postgres.ts +367 -0
- package/src/do/sql.ts +280 -0
- package/src/index.ts +50 -30
- package/src/mcp/binding.ts +236 -0
- package/src/mcp/index.ts +122 -0
- package/src/mcp/server.ts +361 -0
- package/src/mcp/tools.ts +464 -0
- package/src/mcp/types.ts +148 -0
- package/src/pglite/workers-pglite.ts +141 -12
- package/src/pglite-assets/pglite.data +0 -0
- package/src/pglite-assets/pglite.wasm +0 -0
- package/src/worker/auth.ts +17 -6
- package/src/worker/background-pglite-manager.ts +680 -0
- package/src/worker/do-pglite-manager.ts +235 -19
- package/src/worker/entry.ts +112 -30
- package/src/worker/index.ts +71 -1
- package/src/worker/lazy-pglite-manager.ts +595 -0
- package/dist/iceberg/duckdb-wasm.d.ts +0 -447
- package/dist/iceberg/duckdb-wasm.d.ts.map +0 -1
- package/dist/iceberg/duckdb-wasm.js +0 -600
- package/dist/iceberg/duckdb-wasm.js.map +0 -1
- package/dist/iceberg/test-fixtures.d.ts +0 -151
- package/dist/iceberg/test-fixtures.d.ts.map +0 -1
- package/dist/iceberg/test-fixtures.js +0 -446
- package/dist/iceberg/test-fixtures.js.map +0 -1
- package/dist/worker/__mocks__/cloudflare-workers.d.ts +0 -31
- package/dist/worker/__mocks__/cloudflare-workers.d.ts.map +0 -1
- package/dist/worker/__mocks__/cloudflare-workers.js +0 -33
- package/dist/worker/__mocks__/cloudflare-workers.js.map +0 -1
|
@@ -1,447 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DuckDB-WASM Integration for Iceberg Tables
|
|
3
|
-
* Task: postgres-m5p - pg_lake: Add Iceberg/data lake extension support
|
|
4
|
-
*
|
|
5
|
-
* Provides utilities for querying Iceberg tables from browser/WASM environments
|
|
6
|
-
* using DuckDB-WASM as the query engine. This is the recommended approach for
|
|
7
|
-
* data lake access since direct pg_lake is not feasible in WASM.
|
|
8
|
-
*
|
|
9
|
-
* Architecture:
|
|
10
|
-
* ```
|
|
11
|
-
* Browser/Worker <-> DuckDB-WASM <-> R2/S3 (via HTTP) <-> Iceberg Tables
|
|
12
|
-
* ```
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```typescript
|
|
16
|
-
* import { createDuckDBIcebergClient, IcebergQueryBuilder } from '@dotdo/postgres/iceberg'
|
|
17
|
-
*
|
|
18
|
-
* // Create client with R2 Data Catalog
|
|
19
|
-
* const client = await createDuckDBIcebergClient({
|
|
20
|
-
* catalogEndpoint: 'https://account.r2.cloudflarestorage.com',
|
|
21
|
-
* catalogName: 'my_catalog',
|
|
22
|
-
* accessKeyId: process.env.R2_ACCESS_KEY_ID,
|
|
23
|
-
* secretAccessKey: process.env.R2_SECRET_ACCESS_KEY,
|
|
24
|
-
* })
|
|
25
|
-
*
|
|
26
|
-
* // Query Iceberg table
|
|
27
|
-
* const result = await client.query(`
|
|
28
|
-
* SELECT * FROM my_catalog.namespace.table
|
|
29
|
-
* WHERE timestamp >= '2024-01-01'
|
|
30
|
-
* LIMIT 100
|
|
31
|
-
* `)
|
|
32
|
-
* ```
|
|
33
|
-
*
|
|
34
|
-
* @module iceberg/duckdb-wasm
|
|
35
|
-
*/
|
|
36
|
-
/**
|
|
37
|
-
* DuckDB-WASM client configuration
|
|
38
|
-
*/
|
|
39
|
-
export interface DuckDBWASMConfig {
|
|
40
|
-
/** Iceberg REST Catalog endpoint (e.g., R2 Data Catalog) */
|
|
41
|
-
catalogEndpoint: string;
|
|
42
|
-
/** Catalog name to attach */
|
|
43
|
-
catalogName: string;
|
|
44
|
-
/** S3/R2 access key ID */
|
|
45
|
-
accessKeyId?: string;
|
|
46
|
-
/** S3/R2 secret access key */
|
|
47
|
-
secretAccessKey?: string;
|
|
48
|
-
/** AWS region or 'auto' for R2 */
|
|
49
|
-
region?: string;
|
|
50
|
-
/** S3 endpoint URL override */
|
|
51
|
-
s3Endpoint?: string;
|
|
52
|
-
/** DuckDB WASM bundle variant */
|
|
53
|
-
bundle?: 'mvp' | 'eh' | 'coi';
|
|
54
|
-
/** Memory limit in bytes */
|
|
55
|
-
memoryLimit?: number;
|
|
56
|
-
/** Enable query logging */
|
|
57
|
-
enableLogging?: boolean;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Query result from DuckDB-WASM
|
|
61
|
-
*/
|
|
62
|
-
export interface DuckDBWASMQueryResult<T = Record<string, unknown>> {
|
|
63
|
-
/** Result rows */
|
|
64
|
-
rows: T[];
|
|
65
|
-
/** Column names */
|
|
66
|
-
columns: string[];
|
|
67
|
-
/** Column types */
|
|
68
|
-
types: string[];
|
|
69
|
-
/** Execution time in milliseconds */
|
|
70
|
-
executionTimeMs: number;
|
|
71
|
-
/** Rows affected (for mutations) */
|
|
72
|
-
rowsAffected?: number;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Iceberg table metadata from catalog
|
|
76
|
-
*/
|
|
77
|
-
export interface IcebergCatalogTable {
|
|
78
|
-
/** Full table identifier (namespace.table) */
|
|
79
|
-
identifier: string;
|
|
80
|
-
/** Table name */
|
|
81
|
-
name: string;
|
|
82
|
-
/** Namespace */
|
|
83
|
-
namespace: string[];
|
|
84
|
-
/** Current snapshot ID */
|
|
85
|
-
currentSnapshotId?: number;
|
|
86
|
-
/** Schema fields */
|
|
87
|
-
schema: IcebergCatalogField[];
|
|
88
|
-
/** Partition columns */
|
|
89
|
-
partitionColumns: string[];
|
|
90
|
-
/** Table properties */
|
|
91
|
-
properties: Record<string, string>;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Schema field from catalog
|
|
95
|
-
*/
|
|
96
|
-
export interface IcebergCatalogField {
|
|
97
|
-
id: number;
|
|
98
|
-
name: string;
|
|
99
|
-
type: string;
|
|
100
|
-
required: boolean;
|
|
101
|
-
doc?: string;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Time travel options for queries
|
|
105
|
-
*/
|
|
106
|
-
export interface TimeTravelOptions {
|
|
107
|
-
/** Query at specific snapshot ID */
|
|
108
|
-
snapshotId?: number;
|
|
109
|
-
/** Query at specific timestamp (ISO 8601) */
|
|
110
|
-
asOf?: string | Date;
|
|
111
|
-
/** Query before specific snapshot ID */
|
|
112
|
-
beforeSnapshot?: number;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* DuckDB WASM module interface (external dependency)
|
|
116
|
-
* This matches the @duckdb/duckdb-wasm package API
|
|
117
|
-
*/
|
|
118
|
-
export interface DuckDBModule {
|
|
119
|
-
instantiate(): Promise<DuckDBInstance>;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* DuckDB instance interface
|
|
123
|
-
*/
|
|
124
|
-
export interface DuckDBInstance {
|
|
125
|
-
connect(): Promise<DuckDBConnection>;
|
|
126
|
-
close(): Promise<void>;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* DuckDB connection interface
|
|
130
|
-
*/
|
|
131
|
-
export interface DuckDBConnection {
|
|
132
|
-
query<T>(sql: string): Promise<DuckDBArrowResult<T>>;
|
|
133
|
-
run(sql: string): Promise<void>;
|
|
134
|
-
close(): Promise<void>;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* DuckDB Arrow result interface
|
|
138
|
-
*/
|
|
139
|
-
export interface DuckDBArrowResult<T> {
|
|
140
|
-
toArray(): T[];
|
|
141
|
-
schema: {
|
|
142
|
-
fields: Array<{
|
|
143
|
-
name: string;
|
|
144
|
-
type: {
|
|
145
|
-
toString(): string;
|
|
146
|
-
};
|
|
147
|
-
}>;
|
|
148
|
-
};
|
|
149
|
-
numRows: number;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* DuckDB-WASM Iceberg Client
|
|
153
|
-
*
|
|
154
|
-
* A client for querying Iceberg tables using DuckDB-WASM in browser environments.
|
|
155
|
-
* Supports R2 Data Catalog and any Iceberg REST Catalog compatible endpoint.
|
|
156
|
-
*
|
|
157
|
-
* @example
|
|
158
|
-
* ```typescript
|
|
159
|
-
* const client = new DuckDBIcebergClient({
|
|
160
|
-
* catalogEndpoint: 'https://account.r2.cloudflarestorage.com',
|
|
161
|
-
* catalogName: 'analytics',
|
|
162
|
-
* accessKeyId: '...',
|
|
163
|
-
* secretAccessKey: '...',
|
|
164
|
-
* })
|
|
165
|
-
*
|
|
166
|
-
* await client.initialize()
|
|
167
|
-
*
|
|
168
|
-
* // Query with time travel
|
|
169
|
-
* const result = await client.query(`
|
|
170
|
-
* SELECT * FROM analytics.events.page_views
|
|
171
|
-
* WHERE event_date = '2024-01-15'
|
|
172
|
-
* `, { asOf: '2024-01-16T00:00:00Z' })
|
|
173
|
-
* ```
|
|
174
|
-
*/
|
|
175
|
-
export declare class DuckDBIcebergClient {
|
|
176
|
-
private config;
|
|
177
|
-
private db;
|
|
178
|
-
private conn;
|
|
179
|
-
private initialized;
|
|
180
|
-
constructor(config: DuckDBWASMConfig);
|
|
181
|
-
/**
|
|
182
|
-
* Initialize the DuckDB-WASM instance and attach Iceberg catalog
|
|
183
|
-
*
|
|
184
|
-
* @param duckdbModule - DuckDB WASM module (from @duckdb/duckdb-wasm)
|
|
185
|
-
*/
|
|
186
|
-
initialize(duckdbModule: DuckDBModule): Promise<void>;
|
|
187
|
-
/**
|
|
188
|
-
* Load required DuckDB extensions
|
|
189
|
-
*/
|
|
190
|
-
private loadExtensions;
|
|
191
|
-
/**
|
|
192
|
-
* Attach Iceberg catalog
|
|
193
|
-
*/
|
|
194
|
-
private attachCatalog;
|
|
195
|
-
/**
|
|
196
|
-
* Execute a SQL query
|
|
197
|
-
*
|
|
198
|
-
* @param sql - SQL query to execute
|
|
199
|
-
* @param options - Optional time travel options
|
|
200
|
-
* @returns Query result
|
|
201
|
-
*/
|
|
202
|
-
query<T = Record<string, unknown>>(sql: string, options?: TimeTravelOptions): Promise<DuckDBWASMQueryResult<T>>;
|
|
203
|
-
/**
|
|
204
|
-
* Add snapshot ID hint to query for time travel
|
|
205
|
-
*/
|
|
206
|
-
private addSnapshotIdHint;
|
|
207
|
-
/**
|
|
208
|
-
* Add AS OF timestamp hint to query
|
|
209
|
-
*/
|
|
210
|
-
private addAsOfHint;
|
|
211
|
-
/**
|
|
212
|
-
* List all namespaces in the catalog
|
|
213
|
-
*/
|
|
214
|
-
listNamespaces(): Promise<string[]>;
|
|
215
|
-
/**
|
|
216
|
-
* List all tables in a namespace
|
|
217
|
-
*/
|
|
218
|
-
listTables(namespace: string): Promise<string[]>;
|
|
219
|
-
/**
|
|
220
|
-
* Get table metadata
|
|
221
|
-
*/
|
|
222
|
-
getTableMetadata(namespace: string, tableName: string): Promise<IcebergCatalogTable | null>;
|
|
223
|
-
/**
|
|
224
|
-
* Get table snapshots for time travel
|
|
225
|
-
*/
|
|
226
|
-
getSnapshots(namespace: string, tableName: string): Promise<Array<{
|
|
227
|
-
snapshotId: number;
|
|
228
|
-
timestamp: Date;
|
|
229
|
-
operation: string;
|
|
230
|
-
summary: Record<string, string>;
|
|
231
|
-
}>>;
|
|
232
|
-
/**
|
|
233
|
-
* Close the connection and cleanup
|
|
234
|
-
*/
|
|
235
|
-
close(): Promise<void>;
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* Create a DuckDB-WASM Iceberg client
|
|
239
|
-
*
|
|
240
|
-
* @example
|
|
241
|
-
* ```typescript
|
|
242
|
-
* import * as duckdb from '@duckdb/duckdb-wasm'
|
|
243
|
-
*
|
|
244
|
-
* const client = createDuckDBIcebergClient({
|
|
245
|
-
* catalogEndpoint: 'https://account.r2.cloudflarestorage.com',
|
|
246
|
-
* catalogName: 'my_catalog',
|
|
247
|
-
* })
|
|
248
|
-
*
|
|
249
|
-
* await client.initialize(duckdb)
|
|
250
|
-
*
|
|
251
|
-
* const result = await client.query('SELECT * FROM my_catalog.ns.table LIMIT 10')
|
|
252
|
-
* ```
|
|
253
|
-
*/
|
|
254
|
-
export declare function createDuckDBIcebergClient(config: DuckDBWASMConfig): DuckDBIcebergClient;
|
|
255
|
-
/**
|
|
256
|
-
* Fluent query builder for Iceberg tables
|
|
257
|
-
*
|
|
258
|
-
* Provides a type-safe, fluent API for building Iceberg queries with
|
|
259
|
-
* automatic partition pruning, time travel, and column projection.
|
|
260
|
-
*
|
|
261
|
-
* @example
|
|
262
|
-
* ```typescript
|
|
263
|
-
* const query = new IcebergQueryBuilder('my_catalog.events.page_views')
|
|
264
|
-
* .select('user_id', 'page_url', 'timestamp')
|
|
265
|
-
* .where('event_date', '>=', '2024-01-01')
|
|
266
|
-
* .where('country', 'IN', ['US', 'CA', 'UK'])
|
|
267
|
-
* .asOf('2024-01-15T00:00:00Z')
|
|
268
|
-
* .orderBy('timestamp', 'DESC')
|
|
269
|
-
* .limit(100)
|
|
270
|
-
* .build()
|
|
271
|
-
* ```
|
|
272
|
-
*/
|
|
273
|
-
export declare class IcebergQueryBuilder {
|
|
274
|
-
private tableName;
|
|
275
|
-
private selectColumns;
|
|
276
|
-
private whereClauses;
|
|
277
|
-
private orderByClauses;
|
|
278
|
-
private groupByClauses;
|
|
279
|
-
private havingClauses;
|
|
280
|
-
private limitValue?;
|
|
281
|
-
private offsetValue?;
|
|
282
|
-
private timeTravelOptions?;
|
|
283
|
-
constructor(tableName: string);
|
|
284
|
-
/**
|
|
285
|
-
* Specify columns to select
|
|
286
|
-
*/
|
|
287
|
-
select(...columns: string[]): this;
|
|
288
|
-
/**
|
|
289
|
-
* Add a WHERE clause
|
|
290
|
-
*/
|
|
291
|
-
where(column: string, operator: '=' | '!=' | '<' | '<=' | '>' | '>=' | 'IN' | 'LIKE' | 'BETWEEN', value: unknown): this;
|
|
292
|
-
/**
|
|
293
|
-
* Add raw WHERE clause
|
|
294
|
-
*/
|
|
295
|
-
whereRaw(clause: string): this;
|
|
296
|
-
/**
|
|
297
|
-
* Add GROUP BY clause
|
|
298
|
-
*/
|
|
299
|
-
groupBy(...columns: string[]): this;
|
|
300
|
-
/**
|
|
301
|
-
* Add HAVING clause
|
|
302
|
-
*/
|
|
303
|
-
having(clause: string): this;
|
|
304
|
-
/**
|
|
305
|
-
* Add ORDER BY clause
|
|
306
|
-
*/
|
|
307
|
-
orderBy(column: string, direction?: 'ASC' | 'DESC'): this;
|
|
308
|
-
/**
|
|
309
|
-
* Set LIMIT
|
|
310
|
-
*/
|
|
311
|
-
limit(n: number): this;
|
|
312
|
-
/**
|
|
313
|
-
* Set OFFSET
|
|
314
|
-
*/
|
|
315
|
-
offset(n: number): this;
|
|
316
|
-
/**
|
|
317
|
-
* Query at specific snapshot ID
|
|
318
|
-
*/
|
|
319
|
-
atSnapshot(snapshotId: number): this;
|
|
320
|
-
/**
|
|
321
|
-
* Query as of specific timestamp
|
|
322
|
-
*/
|
|
323
|
-
asOf(timestamp: string | Date): this;
|
|
324
|
-
/**
|
|
325
|
-
* Build the SQL query string
|
|
326
|
-
*/
|
|
327
|
-
build(): {
|
|
328
|
-
sql: string;
|
|
329
|
-
timeTravel?: TimeTravelOptions | undefined;
|
|
330
|
-
};
|
|
331
|
-
}
|
|
332
|
-
/**
|
|
333
|
-
* Create an Iceberg query builder
|
|
334
|
-
*/
|
|
335
|
-
export declare function icebergQuery(tableName: string): IcebergQueryBuilder;
|
|
336
|
-
/**
|
|
337
|
-
* R2 Data Catalog configuration
|
|
338
|
-
*/
|
|
339
|
-
export interface R2DataCatalogConfig {
|
|
340
|
-
/** Cloudflare account ID */
|
|
341
|
-
accountId: string;
|
|
342
|
-
/** R2 access key ID */
|
|
343
|
-
accessKeyId: string;
|
|
344
|
-
/** R2 secret access key */
|
|
345
|
-
secretAccessKey: string;
|
|
346
|
-
/** Bucket name (optional, for bucket-specific operations) */
|
|
347
|
-
bucketName?: string;
|
|
348
|
-
}
|
|
349
|
-
/**
|
|
350
|
-
* Build R2 Data Catalog endpoint URL
|
|
351
|
-
*/
|
|
352
|
-
export declare function buildR2CatalogEndpoint(accountId: string): string;
|
|
353
|
-
/**
|
|
354
|
-
* Build DuckDB attach statement for R2 Data Catalog
|
|
355
|
-
*
|
|
356
|
-
* @example
|
|
357
|
-
* ```typescript
|
|
358
|
-
* const attachSql = buildR2AttachStatement({
|
|
359
|
-
* accountId: 'abc123',
|
|
360
|
-
* bucketName: 'my-iceberg-bucket',
|
|
361
|
-
* catalogName: 'my_catalog',
|
|
362
|
-
* })
|
|
363
|
-
*
|
|
364
|
-
* // Returns:
|
|
365
|
-
* // ATTACH 'r2://my-iceberg-bucket' AS my_catalog (
|
|
366
|
-
* // TYPE ICEBERG,
|
|
367
|
-
* // ENDPOINT 'https://abc123.r2.cloudflarestorage.com'
|
|
368
|
-
* // );
|
|
369
|
-
* ```
|
|
370
|
-
*/
|
|
371
|
-
export declare function buildR2AttachStatement(config: {
|
|
372
|
-
accountId: string;
|
|
373
|
-
bucketName: string;
|
|
374
|
-
catalogName: string;
|
|
375
|
-
}): string;
|
|
376
|
-
/**
|
|
377
|
-
* Build DuckDB S3 credentials configuration
|
|
378
|
-
*/
|
|
379
|
-
export declare function buildR2CredentialsSQL(config: {
|
|
380
|
-
accessKeyId: string;
|
|
381
|
-
secretAccessKey: string;
|
|
382
|
-
accountId: string;
|
|
383
|
-
}): string;
|
|
384
|
-
/**
|
|
385
|
-
* Configuration for lightweight Iceberg reader
|
|
386
|
-
* Uses hyparquet and icebird-style approach for minimal bundle size
|
|
387
|
-
*/
|
|
388
|
-
export interface LightweightIcebergConfig {
|
|
389
|
-
/** S3/R2 endpoint */
|
|
390
|
-
endpoint: string;
|
|
391
|
-
/** Access key ID */
|
|
392
|
-
accessKeyId?: string;
|
|
393
|
-
/** Secret access key */
|
|
394
|
-
secretAccessKey?: string;
|
|
395
|
-
/** Region */
|
|
396
|
-
region?: string;
|
|
397
|
-
}
|
|
398
|
-
/**
|
|
399
|
-
* Read Iceberg table metadata from R2
|
|
400
|
-
*
|
|
401
|
-
* This is a lightweight approach that doesn't require DuckDB-WASM,
|
|
402
|
-
* suitable for scenarios where you need minimal bundle size.
|
|
403
|
-
*
|
|
404
|
-
* @example
|
|
405
|
-
* ```typescript
|
|
406
|
-
* const metadata = await readIcebergMetadata(
|
|
407
|
-
* 'r2://my-bucket/iceberg/my-table',
|
|
408
|
-
* { endpoint: 'https://account.r2.cloudflarestorage.com' }
|
|
409
|
-
* )
|
|
410
|
-
*
|
|
411
|
-
* console.log(metadata.currentSnapshotId)
|
|
412
|
-
* console.log(metadata.schema)
|
|
413
|
-
* ```
|
|
414
|
-
*/
|
|
415
|
-
export declare function readIcebergMetadata(tableUrl: string, config: LightweightIcebergConfig): Promise<{
|
|
416
|
-
formatVersion: number;
|
|
417
|
-
tableUuid: string;
|
|
418
|
-
location: string;
|
|
419
|
-
currentSnapshotId: number | null;
|
|
420
|
-
lastSequenceNumber: number;
|
|
421
|
-
schemas: Array<{
|
|
422
|
-
schemaId: number;
|
|
423
|
-
fields: Array<{
|
|
424
|
-
id: number;
|
|
425
|
-
name: string;
|
|
426
|
-
type: string;
|
|
427
|
-
required: boolean;
|
|
428
|
-
}>;
|
|
429
|
-
}>;
|
|
430
|
-
partitionSpecs: Array<{
|
|
431
|
-
specId: number;
|
|
432
|
-
fields: Array<{
|
|
433
|
-
sourceId: number;
|
|
434
|
-
fieldId: number;
|
|
435
|
-
name: string;
|
|
436
|
-
transform: string;
|
|
437
|
-
}>;
|
|
438
|
-
}>;
|
|
439
|
-
snapshots: Array<{
|
|
440
|
-
snapshotId: number;
|
|
441
|
-
sequenceNumber: number;
|
|
442
|
-
timestampMs: number;
|
|
443
|
-
operation: string;
|
|
444
|
-
manifestList: string;
|
|
445
|
-
}>;
|
|
446
|
-
} | null>;
|
|
447
|
-
//# sourceMappingURL=duckdb-wasm.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duckdb-wasm.d.ts","sourceRoot":"","sources":["../../src/iceberg/duckdb-wasm.ts"],"names":[],"mappings":"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"}
|