@dotdo/postgres 0.1.2 → 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/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/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 +16 -3
- 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/background-pglite-manager.ts +680 -0
- package/src/worker/do-pglite-manager.ts +235 -19
- 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
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgresClient - WebSocket client for PostgresDO with rpc.do integration
|
|
3
|
+
*
|
|
4
|
+
* Provides typed access to PostgresDO's RPC methods over WebSocket with:
|
|
5
|
+
* - Automatic reconnection with exponential backoff
|
|
6
|
+
* - Heartbeat ping/pong for connection health
|
|
7
|
+
* - First-message authentication
|
|
8
|
+
* - Full TypeScript support
|
|
9
|
+
*
|
|
10
|
+
* @module client/postgres-client
|
|
11
|
+
*
|
|
12
|
+
* @example Basic usage
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { createPostgresClient } from '@dotdo/postgres/client'
|
|
15
|
+
*
|
|
16
|
+
* const client = createPostgresClient({
|
|
17
|
+
* url: 'wss://postgres.example.com/ws',
|
|
18
|
+
* auth: 'your-api-key',
|
|
19
|
+
* })
|
|
20
|
+
*
|
|
21
|
+
* // Execute queries
|
|
22
|
+
* const users = await client.query('SELECT * FROM users')
|
|
23
|
+
* console.log(users.rows)
|
|
24
|
+
*
|
|
25
|
+
* // Single row
|
|
26
|
+
* const user = await client.queryOne('SELECT * FROM users WHERE id = $1', [1])
|
|
27
|
+
*
|
|
28
|
+
* // Scalar value
|
|
29
|
+
* const count = await client.queryScalar<number>('SELECT COUNT(*) FROM users')
|
|
30
|
+
*
|
|
31
|
+
* // Clean up
|
|
32
|
+
* await client.close()
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @example With rpc.do transport
|
|
36
|
+
* ```typescript
|
|
37
|
+
* import { createPostgresClient } from '@dotdo/postgres/client'
|
|
38
|
+
* import { capnweb } from 'rpc.do/transports'
|
|
39
|
+
*
|
|
40
|
+
* // Using capnweb transport with reconnection
|
|
41
|
+
* const client = createPostgresClient({
|
|
42
|
+
* url: 'wss://postgres.example.com/ws',
|
|
43
|
+
* auth: () => localStorage.getItem('token'),
|
|
44
|
+
* autoReconnect: true,
|
|
45
|
+
* onConnect: () => console.log('Connected!'),
|
|
46
|
+
* onReconnecting: (attempt) => console.log(`Reconnecting... (${attempt})`),
|
|
47
|
+
* })
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
/**
|
|
51
|
+
* PostgresClient - typed WebSocket client for PostgresDO
|
|
52
|
+
*
|
|
53
|
+
* Uses rpc.do's capnweb transport for efficient RPC communication
|
|
54
|
+
* with automatic reconnection and hibernation support.
|
|
55
|
+
*/
|
|
56
|
+
export class PostgresClient {
|
|
57
|
+
config;
|
|
58
|
+
rpcClient = null;
|
|
59
|
+
transport = null;
|
|
60
|
+
connectionPromise = null;
|
|
61
|
+
state = 'disconnected';
|
|
62
|
+
constructor(config) {
|
|
63
|
+
this.config = {
|
|
64
|
+
autoReconnect: true,
|
|
65
|
+
maxReconnectAttempts: Infinity,
|
|
66
|
+
reconnectBackoff: 1000,
|
|
67
|
+
maxReconnectBackoff: 30000,
|
|
68
|
+
heartbeatInterval: 30000,
|
|
69
|
+
allowInsecureAuth: false,
|
|
70
|
+
debug: false,
|
|
71
|
+
...config,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Connect to the PostgresDO WebSocket endpoint
|
|
76
|
+
*/
|
|
77
|
+
async connect() {
|
|
78
|
+
if (this.connectionPromise) {
|
|
79
|
+
return this.connectionPromise;
|
|
80
|
+
}
|
|
81
|
+
if (this.state === 'connected' && this.rpcClient) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
this.state = 'connecting';
|
|
85
|
+
this.connectionPromise = this.establishConnection();
|
|
86
|
+
try {
|
|
87
|
+
await this.connectionPromise;
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
this.connectionPromise = null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Establish the WebSocket connection using rpc.do
|
|
95
|
+
*/
|
|
96
|
+
async establishConnection() {
|
|
97
|
+
try {
|
|
98
|
+
// Dynamic import of rpc.do modules to avoid bundling issues
|
|
99
|
+
const [{ RPC }, { ws }] = await Promise.all([
|
|
100
|
+
import('rpc.do'),
|
|
101
|
+
import('rpc.do/transports'),
|
|
102
|
+
]);
|
|
103
|
+
// Create WebSocket transport
|
|
104
|
+
// Note: For basic authentication and WebSocket connection
|
|
105
|
+
// Advanced reconnection can be added in future rpc.do versions
|
|
106
|
+
const transport = ws(this.config.url, {
|
|
107
|
+
auth: this.config.auth,
|
|
108
|
+
});
|
|
109
|
+
this.transport = transport;
|
|
110
|
+
// Create typed RPC client - use 'any' to avoid complex generic inference issues
|
|
111
|
+
// The PostgresDORpcApi interface ensures proper typing at the API surface
|
|
112
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
113
|
+
this.rpcClient = RPC(transport);
|
|
114
|
+
this.state = 'connected';
|
|
115
|
+
this.config.onConnect?.();
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
this.state = 'disconnected';
|
|
119
|
+
this.config.onError?.(error instanceof Error ? error : new Error(String(error)));
|
|
120
|
+
throw error;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Ensure we're connected before making RPC calls
|
|
125
|
+
*/
|
|
126
|
+
async ensureConnected() {
|
|
127
|
+
if (!this.rpcClient || this.state !== 'connected') {
|
|
128
|
+
await this.connect();
|
|
129
|
+
}
|
|
130
|
+
if (!this.rpcClient) {
|
|
131
|
+
throw new Error('Failed to establish connection');
|
|
132
|
+
}
|
|
133
|
+
return this.rpcClient;
|
|
134
|
+
}
|
|
135
|
+
// ===========================================================================
|
|
136
|
+
// Query Methods
|
|
137
|
+
// ===========================================================================
|
|
138
|
+
/**
|
|
139
|
+
* Execute a SQL query and return full results
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```typescript
|
|
143
|
+
* const result = await client.query('SELECT * FROM users WHERE active = $1', [true])
|
|
144
|
+
* console.log(result.rows)
|
|
145
|
+
* console.log(`${result.rowCount} rows returned in ${result.durationMs}ms`)
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
async query(sql, params) {
|
|
149
|
+
const rpc = await this.ensureConnected();
|
|
150
|
+
return rpc.rpcQuery(sql, params);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Execute a query and return only the first row
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```typescript
|
|
157
|
+
* const user = await client.queryOne('SELECT * FROM users WHERE id = $1', [1])
|
|
158
|
+
* if (user) {
|
|
159
|
+
* console.log(user.name)
|
|
160
|
+
* }
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
async queryOne(sql, params) {
|
|
164
|
+
const rpc = await this.ensureConnected();
|
|
165
|
+
return rpc.rpcQueryOne(sql, params);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Execute a query and return a scalar value (first column of first row)
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```typescript
|
|
172
|
+
* const count = await client.queryScalar<number>('SELECT COUNT(*) FROM users')
|
|
173
|
+
* console.log(`Total users: ${count}`)
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
async queryScalar(sql, params) {
|
|
177
|
+
const rpc = await this.ensureConnected();
|
|
178
|
+
return rpc.rpcQueryScalar(sql, params);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Execute a statement that doesn't return rows
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```typescript
|
|
185
|
+
* const { rowCount } = await client.execute('DELETE FROM users WHERE inactive = true')
|
|
186
|
+
* console.log(`Deleted ${rowCount} inactive users`)
|
|
187
|
+
* ```
|
|
188
|
+
*/
|
|
189
|
+
async execute(sql, params) {
|
|
190
|
+
const rpc = await this.ensureConnected();
|
|
191
|
+
return rpc.rpcExecute(sql, params);
|
|
192
|
+
}
|
|
193
|
+
// ===========================================================================
|
|
194
|
+
// Batch Methods
|
|
195
|
+
// ===========================================================================
|
|
196
|
+
/**
|
|
197
|
+
* Execute multiple queries in a single round trip
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```typescript
|
|
201
|
+
* const result = await client.batch([
|
|
202
|
+
* { sql: 'SELECT * FROM users' },
|
|
203
|
+
* { sql: 'SELECT * FROM orders' },
|
|
204
|
+
* { sql: 'SELECT * FROM products' },
|
|
205
|
+
* ])
|
|
206
|
+
* const [users, orders, products] = result.results
|
|
207
|
+
* ```
|
|
208
|
+
*/
|
|
209
|
+
async batch(queries) {
|
|
210
|
+
const rpc = await this.ensureConnected();
|
|
211
|
+
return rpc.rpcBatch(queries);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Execute multiple queries within a transaction
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```typescript
|
|
218
|
+
* const result = await client.batchTransaction([
|
|
219
|
+
* { sql: 'INSERT INTO users (name) VALUES ($1)', params: ['Alice'] },
|
|
220
|
+
* { sql: 'INSERT INTO audit_log (action) VALUES ($1)', params: ['user_created'] },
|
|
221
|
+
* ])
|
|
222
|
+
* ```
|
|
223
|
+
*/
|
|
224
|
+
async batchTransaction(queries) {
|
|
225
|
+
const rpc = await this.ensureConnected();
|
|
226
|
+
return rpc.rpcBatchTransaction(queries);
|
|
227
|
+
}
|
|
228
|
+
// ===========================================================================
|
|
229
|
+
// Transaction Methods
|
|
230
|
+
// ===========================================================================
|
|
231
|
+
/**
|
|
232
|
+
* Start a transaction and return a transaction API
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* ```typescript
|
|
236
|
+
* const tx = await client.transaction()
|
|
237
|
+
* try {
|
|
238
|
+
* await tx.execute('INSERT INTO users (name) VALUES ($1)', ['Alice'])
|
|
239
|
+
* await tx.execute('INSERT INTO audit_log (action) VALUES ($1)', ['user_created'])
|
|
240
|
+
* await tx.commit()
|
|
241
|
+
* } catch (error) {
|
|
242
|
+
* await tx.rollback()
|
|
243
|
+
* throw error
|
|
244
|
+
* }
|
|
245
|
+
* ```
|
|
246
|
+
*
|
|
247
|
+
* @example With isolation level
|
|
248
|
+
* ```typescript
|
|
249
|
+
* const tx = await client.transaction({ isolationLevel: 'SERIALIZABLE' })
|
|
250
|
+
* // ... perform queries
|
|
251
|
+
* await tx.commit()
|
|
252
|
+
* ```
|
|
253
|
+
*/
|
|
254
|
+
async transaction(options) {
|
|
255
|
+
const rpc = await this.ensureConnected();
|
|
256
|
+
return rpc.rpcTransaction(options);
|
|
257
|
+
}
|
|
258
|
+
// ===========================================================================
|
|
259
|
+
// Utility Methods
|
|
260
|
+
// ===========================================================================
|
|
261
|
+
/**
|
|
262
|
+
* Health check - verify the database is responsive
|
|
263
|
+
*
|
|
264
|
+
* @example
|
|
265
|
+
* ```typescript
|
|
266
|
+
* const { ok, durationMs } = await client.ping()
|
|
267
|
+
* console.log(`Database responded in ${durationMs}ms`)
|
|
268
|
+
* ```
|
|
269
|
+
*/
|
|
270
|
+
async ping() {
|
|
271
|
+
const rpc = await this.ensureConnected();
|
|
272
|
+
return rpc.rpcPing();
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Get the PostgreSQL version
|
|
276
|
+
*
|
|
277
|
+
* @example
|
|
278
|
+
* ```typescript
|
|
279
|
+
* const version = await client.version()
|
|
280
|
+
* console.log(`PostgreSQL version: ${version}`)
|
|
281
|
+
* ```
|
|
282
|
+
*/
|
|
283
|
+
async version() {
|
|
284
|
+
const rpc = await this.ensureConnected();
|
|
285
|
+
return rpc.rpcVersion();
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* List all tables in the public schema
|
|
289
|
+
*
|
|
290
|
+
* @example
|
|
291
|
+
* ```typescript
|
|
292
|
+
* const tables = await client.listTables()
|
|
293
|
+
* console.log('Tables:', tables)
|
|
294
|
+
* ```
|
|
295
|
+
*/
|
|
296
|
+
async listTables() {
|
|
297
|
+
const rpc = await this.ensureConnected();
|
|
298
|
+
return rpc.rpcListTables();
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Get schema information for a table
|
|
302
|
+
*
|
|
303
|
+
* @example
|
|
304
|
+
* ```typescript
|
|
305
|
+
* const columns = await client.describeTable('users')
|
|
306
|
+
* for (const col of columns) {
|
|
307
|
+
* console.log(`${col.column_name}: ${col.data_type}`)
|
|
308
|
+
* }
|
|
309
|
+
* ```
|
|
310
|
+
*/
|
|
311
|
+
async describeTable(tableName) {
|
|
312
|
+
const rpc = await this.ensureConnected();
|
|
313
|
+
return rpc.rpcDescribeTable(tableName);
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Get database statistics
|
|
317
|
+
*
|
|
318
|
+
* @example
|
|
319
|
+
* ```typescript
|
|
320
|
+
* const stats = await client.getStats()
|
|
321
|
+
* console.log(`Queries: ${stats.queryCount}, Avg: ${stats.avgDurationMs}ms`)
|
|
322
|
+
* ```
|
|
323
|
+
*/
|
|
324
|
+
async getStats() {
|
|
325
|
+
const rpc = await this.ensureConnected();
|
|
326
|
+
return rpc.rpcGetStats();
|
|
327
|
+
}
|
|
328
|
+
// ===========================================================================
|
|
329
|
+
// Connection Management
|
|
330
|
+
// ===========================================================================
|
|
331
|
+
/**
|
|
332
|
+
* Get current connection state
|
|
333
|
+
*/
|
|
334
|
+
getConnectionState() {
|
|
335
|
+
return this.state;
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Check if currently connected
|
|
339
|
+
*/
|
|
340
|
+
isConnected() {
|
|
341
|
+
return this.state === 'connected';
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Close the connection
|
|
345
|
+
*
|
|
346
|
+
* @example
|
|
347
|
+
* ```typescript
|
|
348
|
+
* await client.close()
|
|
349
|
+
* ```
|
|
350
|
+
*/
|
|
351
|
+
async close() {
|
|
352
|
+
if (this.transport) {
|
|
353
|
+
this.transport.close();
|
|
354
|
+
this.transport = null;
|
|
355
|
+
}
|
|
356
|
+
this.rpcClient = null;
|
|
357
|
+
this.state = 'closed';
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Create a PostgresClient instance
|
|
362
|
+
*
|
|
363
|
+
* @example Basic usage
|
|
364
|
+
* ```typescript
|
|
365
|
+
* import { createPostgresClient } from '@dotdo/postgres/client'
|
|
366
|
+
*
|
|
367
|
+
* const client = createPostgresClient({
|
|
368
|
+
* url: 'wss://postgres.example.com/ws',
|
|
369
|
+
* auth: 'your-api-key',
|
|
370
|
+
* })
|
|
371
|
+
*
|
|
372
|
+
* const users = await client.query('SELECT * FROM users')
|
|
373
|
+
* ```
|
|
374
|
+
*
|
|
375
|
+
* @example With reconnection callbacks
|
|
376
|
+
* ```typescript
|
|
377
|
+
* const client = createPostgresClient({
|
|
378
|
+
* url: 'wss://postgres.example.com/ws',
|
|
379
|
+
* auth: () => getAuthToken(),
|
|
380
|
+
* onConnect: () => console.log('Connected!'),
|
|
381
|
+
* onDisconnect: (reason) => console.log('Disconnected:', reason),
|
|
382
|
+
* onReconnecting: (attempt) => console.log(`Reconnecting (${attempt})...`),
|
|
383
|
+
* })
|
|
384
|
+
* ```
|
|
385
|
+
*/
|
|
386
|
+
export function createPostgresClient(config) {
|
|
387
|
+
return new PostgresClient(config);
|
|
388
|
+
}
|
|
389
|
+
//# sourceMappingURL=postgres-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-client.js","sourceRoot":"","sources":["../../src/client/postgres-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the PostgresDO WebSocket client
|
|
3
|
+
*
|
|
4
|
+
* @module client/types
|
|
5
|
+
*/
|
|
6
|
+
import type { QueryResultRow, QueryField } from '../worker/types';
|
|
7
|
+
/**
|
|
8
|
+
* Query result from PostgresDO RPC
|
|
9
|
+
*/
|
|
10
|
+
export interface RpcQueryResult<T extends QueryResultRow = QueryResultRow> {
|
|
11
|
+
rows: T[];
|
|
12
|
+
fields: QueryField[];
|
|
13
|
+
rowCount: number;
|
|
14
|
+
durationMs: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Batch query input
|
|
18
|
+
*/
|
|
19
|
+
export interface RpcBatchQuery {
|
|
20
|
+
sql: string;
|
|
21
|
+
params?: unknown[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Batch result from PostgresDO RPC
|
|
25
|
+
*/
|
|
26
|
+
export interface RpcBatchResult {
|
|
27
|
+
results: RpcQueryResult[];
|
|
28
|
+
durationMs: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Transaction options for RPC
|
|
32
|
+
*/
|
|
33
|
+
export interface RpcTransactionOptions {
|
|
34
|
+
isolationLevel?: 'READ UNCOMMITTED' | 'READ COMMITTED' | 'REPEATABLE READ' | 'SERIALIZABLE';
|
|
35
|
+
readOnly?: boolean;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Table column information
|
|
39
|
+
*/
|
|
40
|
+
export interface ColumnInfo {
|
|
41
|
+
column_name: string;
|
|
42
|
+
data_type: string;
|
|
43
|
+
is_nullable: boolean;
|
|
44
|
+
column_default: string | null;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Database statistics
|
|
48
|
+
*/
|
|
49
|
+
export interface DatabaseStats {
|
|
50
|
+
queryCount: number;
|
|
51
|
+
totalDurationMs: number;
|
|
52
|
+
avgDurationMs: number;
|
|
53
|
+
lastQueryAt: Date | null;
|
|
54
|
+
uptime: number;
|
|
55
|
+
shutdownStatus: 'running' | 'draining' | 'shutdown';
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* PostgresDO RPC API interface
|
|
59
|
+
*
|
|
60
|
+
* This interface defines all the RPC methods available on PostgresDO.
|
|
61
|
+
* Used for type-safe client generation with rpc.do.
|
|
62
|
+
*/
|
|
63
|
+
export interface PostgresDORpcApi {
|
|
64
|
+
rpcQuery<T extends QueryResultRow = QueryResultRow>(sql: string, params?: unknown[]): Promise<RpcQueryResult<T>>;
|
|
65
|
+
rpcQueryOne<T extends QueryResultRow = QueryResultRow>(sql: string, params?: unknown[]): Promise<T | null>;
|
|
66
|
+
rpcQueryScalar<T = unknown>(sql: string, params?: unknown[]): Promise<T | null>;
|
|
67
|
+
rpcExecute(sql: string, params?: unknown[]): Promise<{
|
|
68
|
+
rowCount: number;
|
|
69
|
+
durationMs: number;
|
|
70
|
+
}>;
|
|
71
|
+
rpcBatch(queries: RpcBatchQuery[]): Promise<RpcBatchResult>;
|
|
72
|
+
rpcBatchTransaction(queries: RpcBatchQuery[]): Promise<RpcBatchResult>;
|
|
73
|
+
rpcTransaction(options?: RpcTransactionOptions): Promise<TransactionApi>;
|
|
74
|
+
rpcPing(): Promise<{
|
|
75
|
+
ok: true;
|
|
76
|
+
durationMs: number;
|
|
77
|
+
}>;
|
|
78
|
+
rpcVersion(): Promise<string>;
|
|
79
|
+
rpcListTables(): Promise<string[]>;
|
|
80
|
+
rpcDescribeTable(tableName: string): Promise<ColumnInfo[]>;
|
|
81
|
+
rpcGetStats(): Promise<DatabaseStats>;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Transaction API returned by rpcTransaction
|
|
85
|
+
*/
|
|
86
|
+
export interface TransactionApi {
|
|
87
|
+
query<T extends QueryResultRow = QueryResultRow>(sql: string, params?: unknown[]): Promise<RpcQueryResult<T>>;
|
|
88
|
+
queryOne<T extends QueryResultRow = QueryResultRow>(sql: string, params?: unknown[]): Promise<T | null>;
|
|
89
|
+
execute(sql: string, params?: unknown[]): Promise<{
|
|
90
|
+
rowCount: number;
|
|
91
|
+
durationMs: number;
|
|
92
|
+
}>;
|
|
93
|
+
commit(): Promise<void>;
|
|
94
|
+
rollback(): Promise<void>;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Client configuration options
|
|
98
|
+
*/
|
|
99
|
+
export interface PostgresClientConfig {
|
|
100
|
+
/**
|
|
101
|
+
* WebSocket URL for the PostgresDO endpoint
|
|
102
|
+
* @example 'wss://postgres.example.com/ws'
|
|
103
|
+
*/
|
|
104
|
+
url: string;
|
|
105
|
+
/**
|
|
106
|
+
* Authentication token or provider function
|
|
107
|
+
* Can be a static token string or an async function that returns a token
|
|
108
|
+
*/
|
|
109
|
+
auth?: string | (() => string | null | Promise<string | null>);
|
|
110
|
+
/**
|
|
111
|
+
* Enable automatic reconnection on disconnect
|
|
112
|
+
* @default true
|
|
113
|
+
*/
|
|
114
|
+
autoReconnect?: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Maximum number of reconnection attempts
|
|
117
|
+
* @default Infinity
|
|
118
|
+
*/
|
|
119
|
+
maxReconnectAttempts?: number;
|
|
120
|
+
/**
|
|
121
|
+
* Initial backoff delay in ms for reconnection
|
|
122
|
+
* @default 1000
|
|
123
|
+
*/
|
|
124
|
+
reconnectBackoff?: number;
|
|
125
|
+
/**
|
|
126
|
+
* Maximum backoff delay in ms for reconnection
|
|
127
|
+
* @default 30000
|
|
128
|
+
*/
|
|
129
|
+
maxReconnectBackoff?: number;
|
|
130
|
+
/**
|
|
131
|
+
* Heartbeat interval in ms (0 to disable)
|
|
132
|
+
* @default 30000
|
|
133
|
+
*/
|
|
134
|
+
heartbeatInterval?: number;
|
|
135
|
+
/**
|
|
136
|
+
* Callback when connection is established
|
|
137
|
+
*/
|
|
138
|
+
onConnect?: () => void;
|
|
139
|
+
/**
|
|
140
|
+
* Callback when connection is lost
|
|
141
|
+
*/
|
|
142
|
+
onDisconnect?: (reason: string) => void;
|
|
143
|
+
/**
|
|
144
|
+
* Callback when attempting to reconnect
|
|
145
|
+
*/
|
|
146
|
+
onReconnecting?: (attempt: number, maxAttempts: number) => void;
|
|
147
|
+
/**
|
|
148
|
+
* Callback on any error
|
|
149
|
+
*/
|
|
150
|
+
onError?: (error: Error) => void;
|
|
151
|
+
/**
|
|
152
|
+
* Allow auth over insecure ws:// connections
|
|
153
|
+
* WARNING: Only for local development
|
|
154
|
+
* @default false
|
|
155
|
+
*/
|
|
156
|
+
allowInsecureAuth?: boolean;
|
|
157
|
+
/**
|
|
158
|
+
* Enable debug logging
|
|
159
|
+
* @default false
|
|
160
|
+
*/
|
|
161
|
+
debug?: boolean;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Connection state for the client
|
|
165
|
+
*/
|
|
166
|
+
export type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'closed';
|
|
167
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Postgres Durable Object Module
|
|
3
|
+
*
|
|
4
|
+
* Minimal API for PostgreSQL in Cloudflare Workers.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { sql, db, Postgres } from '@dotdo/postgres'
|
|
9
|
+
* export { Postgres }
|
|
10
|
+
*
|
|
11
|
+
* export default {
|
|
12
|
+
* fetch: async () => Response.json(await sql`SELECT * FROM posts`)
|
|
13
|
+
* }
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export { Postgres, type PostgresEnv, type QueryResult } from './postgres';
|
|
17
|
+
export { sql, db, createSql, createDb, type SqlConfig, type SqlResult } from './sql';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/do/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AACzE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA"}
|
package/dist/do/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Postgres Durable Object Module
|
|
3
|
+
*
|
|
4
|
+
* Minimal API for PostgreSQL in Cloudflare Workers.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { sql, db, Postgres } from '@dotdo/postgres'
|
|
9
|
+
* export { Postgres }
|
|
10
|
+
*
|
|
11
|
+
* export default {
|
|
12
|
+
* fetch: async () => Response.json(await sql`SELECT * FROM posts`)
|
|
13
|
+
* }
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export { Postgres } from './postgres';
|
|
17
|
+
export { sql, db, createSql, createDb } from './sql';
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/do/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAsC,MAAM,YAAY,CAAA;AACzE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAkC,MAAM,OAAO,CAAA"}
|