@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.
Files changed (111) hide show
  1. package/README.md +73 -1
  2. package/dist/client/index.d.ts +47 -0
  3. package/dist/client/index.d.ts.map +1 -0
  4. package/dist/client/index.js +47 -0
  5. package/dist/client/index.js.map +1 -0
  6. package/dist/client/postgres-client.d.ts +273 -0
  7. package/dist/client/postgres-client.d.ts.map +1 -0
  8. package/dist/client/postgres-client.js +389 -0
  9. package/dist/client/postgres-client.js.map +1 -0
  10. package/dist/client/types.d.ts +167 -0
  11. package/dist/client/types.d.ts.map +1 -0
  12. package/dist/client/types.js +7 -0
  13. package/dist/client/types.js.map +1 -0
  14. package/dist/do/index.d.ts +18 -0
  15. package/dist/do/index.d.ts.map +1 -0
  16. package/dist/do/index.js +18 -0
  17. package/dist/do/index.js.map +1 -0
  18. package/dist/do/postgres.d.ts +110 -0
  19. package/dist/do/postgres.d.ts.map +1 -0
  20. package/dist/do/postgres.js +266 -0
  21. package/dist/do/postgres.js.map +1 -0
  22. package/dist/do/sql.d.ts +92 -0
  23. package/dist/do/sql.d.ts.map +1 -0
  24. package/dist/do/sql.js +204 -0
  25. package/dist/do/sql.js.map +1 -0
  26. package/dist/index.d.ts +25 -30
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +29 -30
  29. package/dist/index.js.map +1 -1
  30. package/dist/mcp/binding.d.ts +47 -0
  31. package/dist/mcp/binding.d.ts.map +1 -0
  32. package/dist/mcp/binding.js +183 -0
  33. package/dist/mcp/binding.js.map +1 -0
  34. package/dist/mcp/index.d.ts +92 -0
  35. package/dist/mcp/index.d.ts.map +1 -0
  36. package/dist/mcp/index.js +91 -0
  37. package/dist/mcp/index.js.map +1 -0
  38. package/dist/mcp/server.d.ts +62 -0
  39. package/dist/mcp/server.d.ts.map +1 -0
  40. package/dist/mcp/server.js +278 -0
  41. package/dist/mcp/server.js.map +1 -0
  42. package/dist/mcp/tools.d.ts +58 -0
  43. package/dist/mcp/tools.d.ts.map +1 -0
  44. package/dist/mcp/tools.js +356 -0
  45. package/dist/mcp/tools.js.map +1 -0
  46. package/dist/mcp/types.d.ts +139 -0
  47. package/dist/mcp/types.d.ts.map +1 -0
  48. package/dist/mcp/types.js +7 -0
  49. package/dist/mcp/types.js.map +1 -0
  50. package/dist/pglite/workers-pglite.d.ts +13 -4
  51. package/dist/pglite/workers-pglite.d.ts.map +1 -1
  52. package/dist/pglite/workers-pglite.js +110 -5
  53. package/dist/pglite/workers-pglite.js.map +1 -1
  54. package/dist/pglite-assets/pglite.data +0 -0
  55. package/dist/pglite-assets/pglite.wasm +0 -0
  56. package/dist/worker/auth.d.ts.map +1 -1
  57. package/dist/worker/auth.js +16 -6
  58. package/dist/worker/auth.js.map +1 -1
  59. package/dist/worker/background-pglite-manager.d.ts +243 -0
  60. package/dist/worker/background-pglite-manager.d.ts.map +1 -0
  61. package/dist/worker/background-pglite-manager.js +528 -0
  62. package/dist/worker/background-pglite-manager.js.map +1 -0
  63. package/dist/worker/do-pglite-manager.d.ts +77 -0
  64. package/dist/worker/do-pglite-manager.d.ts.map +1 -1
  65. package/dist/worker/do-pglite-manager.js +189 -12
  66. package/dist/worker/do-pglite-manager.js.map +1 -1
  67. package/dist/worker/entry.d.ts.map +1 -1
  68. package/dist/worker/entry.js +108 -26
  69. package/dist/worker/entry.js.map +1 -1
  70. package/dist/worker/index.d.ts +7 -1
  71. package/dist/worker/index.d.ts.map +1 -1
  72. package/dist/worker/index.js +19 -1
  73. package/dist/worker/index.js.map +1 -1
  74. package/dist/worker/lazy-pglite-manager.d.ts +242 -0
  75. package/dist/worker/lazy-pglite-manager.d.ts.map +1 -0
  76. package/dist/worker/lazy-pglite-manager.js +463 -0
  77. package/dist/worker/lazy-pglite-manager.js.map +1 -0
  78. package/package.json +20 -6
  79. package/src/client/index.ts +61 -0
  80. package/src/client/postgres-client.ts +442 -0
  81. package/src/client/types.ts +211 -0
  82. package/src/do/index.ts +18 -0
  83. package/src/do/postgres.ts +367 -0
  84. package/src/do/sql.ts +280 -0
  85. package/src/index.ts +50 -30
  86. package/src/mcp/binding.ts +236 -0
  87. package/src/mcp/index.ts +122 -0
  88. package/src/mcp/server.ts +361 -0
  89. package/src/mcp/tools.ts +464 -0
  90. package/src/mcp/types.ts +148 -0
  91. package/src/pglite/workers-pglite.ts +141 -12
  92. package/src/pglite-assets/pglite.data +0 -0
  93. package/src/pglite-assets/pglite.wasm +0 -0
  94. package/src/worker/auth.ts +17 -6
  95. package/src/worker/background-pglite-manager.ts +680 -0
  96. package/src/worker/do-pglite-manager.ts +235 -19
  97. package/src/worker/entry.ts +112 -30
  98. package/src/worker/index.ts +71 -1
  99. package/src/worker/lazy-pglite-manager.ts +595 -0
  100. package/dist/iceberg/duckdb-wasm.d.ts +0 -447
  101. package/dist/iceberg/duckdb-wasm.d.ts.map +0 -1
  102. package/dist/iceberg/duckdb-wasm.js +0 -600
  103. package/dist/iceberg/duckdb-wasm.js.map +0 -1
  104. package/dist/iceberg/test-fixtures.d.ts +0 -151
  105. package/dist/iceberg/test-fixtures.d.ts.map +0 -1
  106. package/dist/iceberg/test-fixtures.js +0 -446
  107. package/dist/iceberg/test-fixtures.js.map +0 -1
  108. package/dist/worker/__mocks__/cloudflare-workers.d.ts +0 -31
  109. package/dist/worker/__mocks__/cloudflare-workers.d.ts.map +0 -1
  110. package/dist/worker/__mocks__/cloudflare-workers.js +0 -33
  111. 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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"}