@event-driven-io/dumbo 0.13.0-beta.15 → 0.13.0-beta.16

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 (61) hide show
  1. package/dist/chunk-2MAOPZSK.js +437 -0
  2. package/dist/chunk-2MAOPZSK.js.map +1 -0
  3. package/dist/{chunk-I6WQ6ILG.cjs → chunk-HPEYIM5N.cjs} +36 -36
  4. package/dist/chunk-HPEYIM5N.cjs.map +1 -0
  5. package/dist/{chunk-JZS74K5L.js → chunk-IJRZ766U.js} +5 -5
  6. package/dist/chunk-IJRZ766U.js.map +1 -0
  7. package/dist/chunk-KG6I4R6I.cjs +437 -0
  8. package/dist/chunk-KG6I4R6I.cjs.map +1 -0
  9. package/dist/{chunk-J5BB5WSH.cjs → chunk-NRZ7R3ZV.cjs} +1491 -1491
  10. package/dist/chunk-NRZ7R3ZV.cjs.map +1 -0
  11. package/dist/{chunk-LKUVAHI7.js → chunk-Q6OZQRKU.js} +1758 -1758
  12. package/dist/chunk-Q6OZQRKU.js.map +1 -0
  13. package/dist/cloudflare.cjs +16 -18
  14. package/dist/cloudflare.cjs.map +1 -1
  15. package/dist/cloudflare.d.cts +3 -3
  16. package/dist/cloudflare.d.ts +3 -3
  17. package/dist/cloudflare.js +2 -4
  18. package/dist/cloudflare.js.map +1 -1
  19. package/dist/{columnProcessors-CSjguQe9.d.ts → columnProcessors-BtZXY5WW.d.ts} +1 -1
  20. package/dist/{columnProcessors-BTltQv2d.d.cts → columnProcessors-CDIQzQpf.d.cts} +1 -1
  21. package/dist/{connectionString-Cn7dKOIw.d.cts → connectionString-CnFjeU5f.d.cts} +1 -1
  22. package/dist/{connectionString-Cn7dKOIw.d.ts → connectionString-CnFjeU5f.d.ts} +1 -1
  23. package/dist/index.cjs +39 -5
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.d.cts +3 -3
  26. package/dist/index.d.ts +3 -3
  27. package/dist/index.js +39 -5
  28. package/dist/index.js.map +1 -1
  29. package/dist/pg.cjs +31 -421
  30. package/dist/pg.cjs.map +1 -1
  31. package/dist/pg.d.cts +5 -48
  32. package/dist/pg.d.ts +5 -48
  33. package/dist/pg.js +26 -416
  34. package/dist/pg.js.map +1 -1
  35. package/dist/postgresql.cjs +46 -0
  36. package/dist/postgresql.cjs.map +1 -0
  37. package/dist/postgresql.d.cts +49 -0
  38. package/dist/postgresql.d.ts +49 -0
  39. package/dist/postgresql.js +46 -0
  40. package/dist/postgresql.js.map +1 -0
  41. package/dist/sqlite.cjs +52 -0
  42. package/dist/sqlite.cjs.map +1 -0
  43. package/dist/{index-BIH9BOl_.d.ts → sqlite.d.cts} +2 -2
  44. package/dist/{index-C75hGagy.d.cts → sqlite.d.ts} +2 -2
  45. package/dist/sqlite.js +52 -0
  46. package/dist/sqlite.js.map +1 -0
  47. package/dist/sqlite3.cjs +19 -20
  48. package/dist/sqlite3.cjs.map +1 -1
  49. package/dist/sqlite3.d.cts +3 -3
  50. package/dist/sqlite3.d.ts +3 -3
  51. package/dist/sqlite3.js +2 -3
  52. package/dist/sqlite3.js.map +1 -1
  53. package/package.json +26 -3
  54. package/dist/chunk-2P3EJGSV.js +0 -47
  55. package/dist/chunk-2P3EJGSV.js.map +0 -1
  56. package/dist/chunk-GTTOLSV6.cjs +0 -47
  57. package/dist/chunk-GTTOLSV6.cjs.map +0 -1
  58. package/dist/chunk-I6WQ6ILG.cjs.map +0 -1
  59. package/dist/chunk-J5BB5WSH.cjs.map +0 -1
  60. package/dist/chunk-JZS74K5L.js.map +0 -1
  61. package/dist/chunk-LKUVAHI7.js.map +0 -1
@@ -0,0 +1,437 @@
1
+ import {
2
+ SQL,
3
+ SQLArray,
4
+ SQLFormatter,
5
+ SQLProcessor,
6
+ SQLProcessorsRegistry,
7
+ defaultDatabaseLockOptions,
8
+ defaultProcessorsRegistry,
9
+ exists,
10
+ mapDefaultSQLColumnProcessors,
11
+ mapSQLIdentifier,
12
+ registerDefaultMigratorOptions,
13
+ registerFormatter,
14
+ single
15
+ } from "./chunk-Q6OZQRKU.js";
16
+
17
+ // src/storage/postgresql/core/locks/advisoryLocks.ts
18
+ var tryAcquireAdvisoryLock = async (execute, options) => {
19
+ const timeoutMs = options.timeoutMs ?? defaultDatabaseLockOptions.timeoutMs;
20
+ const advisoryLock2 = options.mode === "Permanent" ? "pg_advisory_lock" : "pg_advisory_xact_lock";
21
+ try {
22
+ await single(
23
+ execute.query(
24
+ SQL`SELECT ${SQL.plain(advisoryLock2)}(${options.lockId}) AS locked`,
25
+ { timeoutMs }
26
+ )
27
+ );
28
+ return true;
29
+ } catch (error) {
30
+ if (error instanceof Error && "code" in error && error.code === "57014")
31
+ return false;
32
+ throw error;
33
+ }
34
+ };
35
+ var releaseAdvisoryLock = async (execute, options) => {
36
+ const timeoutMs = options.timeoutMs ?? defaultDatabaseLockOptions.timeoutMs;
37
+ try {
38
+ await single(
39
+ execute.query(
40
+ SQL`SELECT pg_advisory_unlock(${options.lockId}) AS locked`,
41
+ { timeoutMs }
42
+ )
43
+ );
44
+ return true;
45
+ } catch (error) {
46
+ if (error instanceof Error && "code" in error && error.code === "57014")
47
+ return false;
48
+ throw error;
49
+ }
50
+ };
51
+ var acquireAdvisoryLock = async (execute, options) => {
52
+ const lockAcquired = await tryAcquireAdvisoryLock(execute, options);
53
+ if (!lockAcquired) {
54
+ throw new Error(
55
+ "Failed to acquire advisory lock within the specified timeout. Migration aborted."
56
+ );
57
+ }
58
+ };
59
+ var AdvisoryLock = {
60
+ acquire: acquireAdvisoryLock,
61
+ tryAcquire: tryAcquireAdvisoryLock,
62
+ release: releaseAdvisoryLock,
63
+ withAcquire: async (execute, handle, options) => {
64
+ await acquireAdvisoryLock(execute, options);
65
+ try {
66
+ return await handle();
67
+ } finally {
68
+ if (options.mode === "Permanent")
69
+ await releaseAdvisoryLock(execute, options);
70
+ }
71
+ }
72
+ };
73
+ var advisoryLock = (execute, options) => ({
74
+ acquire: (acquireOptions) => acquireAdvisoryLock(execute, {
75
+ ...options,
76
+ ...acquireOptions ?? {}
77
+ }),
78
+ tryAcquire: (acquireOptions) => tryAcquireAdvisoryLock(execute, {
79
+ ...options,
80
+ ...acquireOptions ?? {}
81
+ }),
82
+ release: () => releaseAdvisoryLock(execute, options),
83
+ withAcquire: async (handle, acquireOptions) => {
84
+ await acquireAdvisoryLock(execute, {
85
+ ...options,
86
+ ...acquireOptions ?? {}
87
+ });
88
+ try {
89
+ return await handle();
90
+ } finally {
91
+ await releaseAdvisoryLock(execute, options);
92
+ }
93
+ }
94
+ });
95
+
96
+ // src/storage/postgresql/core/schema/migrations.ts
97
+ var DefaultPostgreSQLMigratorOptions = {
98
+ lock: {
99
+ databaseLock: AdvisoryLock
100
+ }
101
+ };
102
+ registerDefaultMigratorOptions("PostgreSQL", DefaultPostgreSQLMigratorOptions);
103
+
104
+ // src/storage/postgresql/core/schema/schema.ts
105
+ var defaultPostgreSqlDatabase = "postgres";
106
+ var tableExistsSQL = (tableName) => SQL`
107
+ SELECT EXISTS (
108
+ SELECT FROM pg_tables
109
+ WHERE tablename = ${tableName}
110
+ ) AS exists;`;
111
+ var tableExists = async (pool, tableName) => exists(pool.execute.query(tableExistsSQL(tableName)));
112
+ var functionExistsSQL = (functionName) => SQL`
113
+ SELECT EXISTS (
114
+ SELECT FROM pg_proc
115
+ WHERE
116
+ proname = ${functionName}
117
+ ) AS exists;`;
118
+ var functionExists = async (pool, tableName) => exists(pool.execute.query(functionExistsSQL(tableName)));
119
+
120
+ // src/storage/postgresql/core/connections/connectionString.ts
121
+ var defaultPostgreSQLConnectionString = "postgresql://postgres@localhost:5432/postgres";
122
+ var getDatabaseNameOrDefault = (connectionString) => parseDatabaseName(connectionString) ?? defaultPostgreSqlDatabase;
123
+ var PostgreSQLConnectionString = (connectionString) => {
124
+ if (!connectionString.startsWith("postgresql://") && !connectionString.startsWith("postgres://")) {
125
+ throw new Error(
126
+ `Invalid PostgreSQL connection string: ${connectionString}. It should start with "postgresql://".`
127
+ );
128
+ }
129
+ return connectionString;
130
+ };
131
+ function parseDatabaseName(str) {
132
+ if (str.charAt(0) === "/") {
133
+ const parts = str.split(" ");
134
+ return parts[1] || null;
135
+ }
136
+ if (/ |%[^a-f0-9]|%[a-f0-9][^a-f0-9]/i.test(str)) {
137
+ str = encodeURI(str).replace(/%25(\d\d)/g, "%$1");
138
+ }
139
+ let result;
140
+ try {
141
+ result = new URL(str, "postgres://base");
142
+ } catch {
143
+ try {
144
+ result = new URL(str.replace("@/", "@___DUMMY___/"), "postgres://base");
145
+ } catch {
146
+ return null;
147
+ }
148
+ }
149
+ if (result.protocol === "socket:") {
150
+ return result.searchParams.get("db");
151
+ }
152
+ const pathname = result.pathname.slice(1) || null;
153
+ return pathname ? decodeURI(pathname) : null;
154
+ }
155
+
156
+ // src/storage/postgresql/core/sql/processors/arrayProcessors.ts
157
+ var PostgreSQLArrayProcessor = SQLProcessor({
158
+ canHandle: "SQL_ARRAY",
159
+ handle: (token, { builder, mapper, serializer }) => {
160
+ if (token.value.length === 0) {
161
+ throw new Error(
162
+ "Empty arrays are not supported. If you're using it with SELECT IN statement Use SQL.in(column, array) helper instead."
163
+ );
164
+ }
165
+ const mappedValue = mapper.mapValue(token.value, serializer);
166
+ if (token.mode === "params") {
167
+ builder.addParams(mappedValue);
168
+ } else {
169
+ builder.addParam(mappedValue);
170
+ }
171
+ }
172
+ });
173
+ var PostgreSQLExpandSQLInProcessor = SQLProcessor(
174
+ {
175
+ canHandle: "SQL_IN",
176
+ handle: (token, context) => {
177
+ const { builder, mapper, processorsRegistry } = context;
178
+ const { values: inValues, column, mode } = token;
179
+ if (inValues.value.length === 0) {
180
+ builder.addParam(mapper.mapValue(false, context.serializer));
181
+ return;
182
+ }
183
+ builder.addSQL(
184
+ mapper.mapValue(column.value, context.serializer)
185
+ );
186
+ const arrayProcessor = processorsRegistry.get(SQLArray.type);
187
+ if (!arrayProcessor) {
188
+ throw new Error(
189
+ "No sql processor registered for an array. Cannot expand IN statement"
190
+ );
191
+ }
192
+ if (mode === "params") {
193
+ builder.addSQL(` IN (`);
194
+ const expandedArray = { ...inValues, mode: "params" };
195
+ arrayProcessor.handle(expandedArray, context);
196
+ builder.addSQL(`)`);
197
+ } else {
198
+ builder.addSQL(` = ANY (`);
199
+ arrayProcessor.handle(inValues, context);
200
+ builder.addSQL(`)`);
201
+ }
202
+ }
203
+ }
204
+ );
205
+
206
+ // src/storage/postgresql/core/sql/processors/columProcessors.ts
207
+ var mapColumnType = (token, { builder }) => {
208
+ let columnSQL;
209
+ const { sqlTokenType } = token;
210
+ switch (sqlTokenType) {
211
+ case "SQL_COLUMN_AUTO_INCREMENT":
212
+ columnSQL = `${token.bigint ? "BIGSERIAL" : "SERIAL"} ${token.primaryKey ? "PRIMARY KEY" : ""}`;
213
+ break;
214
+ case "SQL_COLUMN_BIGINT":
215
+ columnSQL = "BIGINT";
216
+ break;
217
+ case "SQL_COLUMN_SERIAL":
218
+ columnSQL = "SERIAL";
219
+ break;
220
+ case "SQL_COLUMN_INTEGER":
221
+ columnSQL = "INTEGER";
222
+ break;
223
+ case "SQL_COLUMN_JSONB":
224
+ columnSQL = "JSONB";
225
+ break;
226
+ case "SQL_COLUMN_BIGSERIAL":
227
+ columnSQL = "BIGSERIAL";
228
+ break;
229
+ case "SQL_COLUMN_TIMESTAMP":
230
+ columnSQL = "TIMESTAMP";
231
+ break;
232
+ case "SQL_COLUMN_TIMESTAMPTZ":
233
+ columnSQL = "TIMESTAMPTZ";
234
+ break;
235
+ case "SQL_COLUMN_VARCHAR":
236
+ columnSQL = `VARCHAR ${Number.isNaN(token.length) ? "" : `(${token.length})`}`;
237
+ break;
238
+ default: {
239
+ const exhaustiveCheck = sqlTokenType;
240
+ throw new Error(`Unknown column type: ${exhaustiveCheck}`);
241
+ }
242
+ }
243
+ builder.addSQL(columnSQL);
244
+ };
245
+ var postgreSQLColumnProcessors = mapDefaultSQLColumnProcessors(mapColumnType);
246
+
247
+ // src/storage/postgresql/core/sql/formatter/reserved.ts
248
+ var reservedMap = {
249
+ AES128: true,
250
+ AES256: true,
251
+ ALL: true,
252
+ ALLOWOVERWRITE: true,
253
+ ANALYSE: true,
254
+ ANALYZE: true,
255
+ AND: true,
256
+ ANY: true,
257
+ ARRAY: true,
258
+ AS: true,
259
+ ASC: true,
260
+ AUTHORIZATION: true,
261
+ BACKUP: true,
262
+ BETWEEN: true,
263
+ BINARY: true,
264
+ BLANKSASNULL: true,
265
+ BOTH: true,
266
+ BYTEDICT: true,
267
+ CASE: true,
268
+ CAST: true,
269
+ CHECK: true,
270
+ COLLATE: true,
271
+ COLUMN: true,
272
+ CONSTRAINT: true,
273
+ CREATE: true,
274
+ CREDENTIALS: true,
275
+ CROSS: true,
276
+ CURRENT_DATE: true,
277
+ CURRENT_TIME: true,
278
+ CURRENT_TIMESTAMP: true,
279
+ CURRENT_USER: true,
280
+ CURRENT_USER_ID: true,
281
+ DEFAULT: true,
282
+ DEFERRABLE: true,
283
+ DEFLATE: true,
284
+ DEFRAG: true,
285
+ DELTA: true,
286
+ DELTA32K: true,
287
+ DESC: true,
288
+ DISABLE: true,
289
+ DISTINCT: true,
290
+ DO: true,
291
+ ELSE: true,
292
+ EMPTYASNULL: true,
293
+ ENABLE: true,
294
+ ENCODE: true,
295
+ ENCRYPT: true,
296
+ ENCRYPTION: true,
297
+ END: true,
298
+ EXCEPT: true,
299
+ EXPLICIT: true,
300
+ FALSE: true,
301
+ FOR: true,
302
+ FOREIGN: true,
303
+ FREEZE: true,
304
+ FROM: true,
305
+ FULL: true,
306
+ GLOBALDICT256: true,
307
+ GLOBALDICT64K: true,
308
+ GRANT: true,
309
+ GROUP: true,
310
+ GZIP: true,
311
+ HAVING: true,
312
+ IDENTITY: true,
313
+ IGNORE: true,
314
+ ILIKE: true,
315
+ IN: true,
316
+ INITIALLY: true,
317
+ INNER: true,
318
+ INTERSECT: true,
319
+ INTO: true,
320
+ IS: true,
321
+ ISNULL: true,
322
+ JOIN: true,
323
+ LEADING: true,
324
+ LEFT: true,
325
+ LIKE: true,
326
+ LIMIT: true,
327
+ LOCALTIME: true,
328
+ LOCALTIMESTAMP: true,
329
+ LUN: true,
330
+ LUNS: true,
331
+ LZO: true,
332
+ LZOP: true,
333
+ MINUS: true,
334
+ MOSTLY13: true,
335
+ MOSTLY32: true,
336
+ MOSTLY8: true,
337
+ NATURAL: true,
338
+ NEW: true,
339
+ NOT: true,
340
+ NOTNULL: true,
341
+ NULL: true,
342
+ NULLS: true,
343
+ OFF: true,
344
+ OFFLINE: true,
345
+ OFFSET: true,
346
+ OLD: true,
347
+ ON: true,
348
+ ONLY: true,
349
+ OPEN: true,
350
+ OR: true,
351
+ ORDER: true,
352
+ OUTER: true,
353
+ OVERLAPS: true,
354
+ PARALLEL: true,
355
+ PARTITION: true,
356
+ PERCENT: true,
357
+ PLACING: true,
358
+ PRIMARY: true,
359
+ RAW: true,
360
+ READRATIO: true,
361
+ RECOVER: true,
362
+ REFERENCES: true,
363
+ REJECTLOG: true,
364
+ RESORT: true,
365
+ RESTORE: true,
366
+ RIGHT: true,
367
+ SELECT: true,
368
+ SESSION_USER: true,
369
+ SIMILAR: true,
370
+ SOME: true,
371
+ SYSDATE: true,
372
+ SYSTEM: true,
373
+ TABLE: true,
374
+ TAG: true,
375
+ TDES: true,
376
+ TEXT255: true,
377
+ TEXT32K: true,
378
+ THEN: true,
379
+ TO: true,
380
+ TOP: true,
381
+ TRAILING: true,
382
+ TRUE: true,
383
+ TRUNCATECOLUMNS: true,
384
+ UNION: true,
385
+ UNIQUE: true,
386
+ USER: true,
387
+ USING: true,
388
+ VERBOSE: true,
389
+ WALLET: true,
390
+ WHEN: true,
391
+ WHERE: true,
392
+ WITH: true,
393
+ WITHOUT: true
394
+ };
395
+ var reserved_default = reservedMap;
396
+
397
+ // src/storage/postgresql/core/sql/formatter/index.ts
398
+ var postgreSQLProcessorsRegistry = SQLProcessorsRegistry({
399
+ from: defaultProcessorsRegistry
400
+ }).register(postgreSQLColumnProcessors).register(PostgreSQLArrayProcessor, PostgreSQLExpandSQLInProcessor);
401
+ var pgFormatter = SQLFormatter({
402
+ processorsRegistry: postgreSQLProcessorsRegistry,
403
+ valueMapper: {
404
+ mapDate: (value) => value.toISOString().replace("T", " ").replace("Z", "+00"),
405
+ mapPlaceholder: (index) => `$${index + 1}`,
406
+ mapIdentifier: (value) => mapSQLIdentifier(value, { reservedWords: reserved_default }),
407
+ mapArray: (values) => values
408
+ }
409
+ });
410
+ registerFormatter("PostgreSQL", pgFormatter);
411
+
412
+ // src/storage/postgresql/core/index.ts
413
+ var PostgreSQLDatabaseName = "PostgreSQL";
414
+
415
+ export {
416
+ tryAcquireAdvisoryLock,
417
+ releaseAdvisoryLock,
418
+ acquireAdvisoryLock,
419
+ AdvisoryLock,
420
+ advisoryLock,
421
+ DefaultPostgreSQLMigratorOptions,
422
+ defaultPostgreSqlDatabase,
423
+ tableExistsSQL,
424
+ tableExists,
425
+ functionExistsSQL,
426
+ functionExists,
427
+ defaultPostgreSQLConnectionString,
428
+ getDatabaseNameOrDefault,
429
+ PostgreSQLConnectionString,
430
+ parseDatabaseName,
431
+ PostgreSQLArrayProcessor,
432
+ PostgreSQLExpandSQLInProcessor,
433
+ postgreSQLColumnProcessors,
434
+ pgFormatter,
435
+ PostgreSQLDatabaseName
436
+ };
437
+ //# sourceMappingURL=chunk-2MAOPZSK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/storage/postgresql/core/locks/advisoryLocks.ts","../src/storage/postgresql/core/schema/migrations.ts","../src/storage/postgresql/core/schema/schema.ts","../src/storage/postgresql/core/connections/connectionString.ts","../src/storage/postgresql/core/sql/processors/arrayProcessors.ts","../src/storage/postgresql/core/sql/processors/columProcessors.ts","../src/storage/postgresql/core/sql/formatter/reserved.ts","../src/storage/postgresql/core/sql/formatter/index.ts","../src/storage/postgresql/core/index.ts"],"sourcesContent":["import {\n defaultDatabaseLockOptions,\n single,\n SQL,\n type AcquireDatabaseLockMode,\n type AcquireDatabaseLockOptions,\n type DatabaseLock,\n type DatabaseLockOptions,\n type ReleaseDatabaseLockOptions,\n type SQLExecutor,\n} from '../../../../core';\n\nexport const tryAcquireAdvisoryLock = async (\n execute: SQLExecutor,\n options: AcquireDatabaseLockOptions,\n): Promise<boolean> => {\n const timeoutMs = options.timeoutMs ?? defaultDatabaseLockOptions.timeoutMs;\n\n const advisoryLock =\n options.mode === 'Permanent' ? 'pg_advisory_lock' : 'pg_advisory_xact_lock';\n\n try {\n await single(\n execute.query<{ locked: boolean }>(\n SQL`SELECT ${SQL.plain(advisoryLock)}(${options.lockId}) AS locked`,\n { timeoutMs },\n ),\n );\n return true;\n } catch (error) {\n if (error instanceof Error && 'code' in error && error.code === '57014')\n return false;\n\n throw error;\n }\n};\n\nexport const releaseAdvisoryLock = async (\n execute: SQLExecutor,\n options: ReleaseDatabaseLockOptions,\n): Promise<boolean> => {\n const timeoutMs = options.timeoutMs ?? defaultDatabaseLockOptions.timeoutMs;\n\n try {\n await single(\n execute.query<{ locked: boolean }>(\n SQL`SELECT pg_advisory_unlock(${options.lockId}) AS locked`,\n { timeoutMs },\n ),\n );\n return true;\n } catch (error) {\n if (error instanceof Error && 'code' in error && error.code === '57014')\n return false;\n\n throw error;\n }\n};\n\nexport const acquireAdvisoryLock = async (\n execute: SQLExecutor,\n options: AcquireDatabaseLockOptions,\n) => {\n const lockAcquired = await tryAcquireAdvisoryLock(execute, options);\n if (!lockAcquired) {\n throw new Error(\n 'Failed to acquire advisory lock within the specified timeout. Migration aborted.',\n );\n }\n};\n\nexport const AdvisoryLock: DatabaseLock = {\n acquire: acquireAdvisoryLock,\n tryAcquire: tryAcquireAdvisoryLock,\n release: releaseAdvisoryLock,\n withAcquire: async <Result>(\n execute: SQLExecutor,\n handle: () => Promise<Result>,\n options: AcquireDatabaseLockOptions,\n ) => {\n await acquireAdvisoryLock(execute, options);\n try {\n return await handle();\n } finally {\n if (options.mode === 'Permanent')\n await releaseAdvisoryLock(execute, options);\n }\n },\n};\n\nexport const advisoryLock = (\n execute: SQLExecutor,\n options: DatabaseLockOptions,\n) => ({\n acquire: (acquireOptions?: { mode: AcquireDatabaseLockMode }) =>\n acquireAdvisoryLock(execute, {\n ...options,\n ...(acquireOptions ?? {}),\n }),\n tryAcquire: (acquireOptions?: { mode: AcquireDatabaseLockMode }) =>\n tryAcquireAdvisoryLock(execute, {\n ...options,\n ...(acquireOptions ?? {}),\n }),\n release: () => releaseAdvisoryLock(execute, options),\n withAcquire: async <Result>(\n handle: () => Promise<Result>,\n acquireOptions?: { mode: AcquireDatabaseLockMode },\n ) => {\n await acquireAdvisoryLock(execute, {\n ...options,\n ...(acquireOptions ?? {}),\n });\n try {\n return await handle();\n } finally {\n await releaseAdvisoryLock(execute, options);\n }\n },\n});\n","import {\n type MigratorOptions,\n registerDefaultMigratorOptions,\n} from '../../../../core';\nimport { AdvisoryLock } from '../locks';\n\nexport const DefaultPostgreSQLMigratorOptions: MigratorOptions = {\n lock: {\n databaseLock: AdvisoryLock,\n },\n};\n\nregisterDefaultMigratorOptions('PostgreSQL', DefaultPostgreSQLMigratorOptions);\n","import { exists, SQL, type ConnectionPool } from '../../../../core';\nexport * from './schema';\n\nexport const defaultPostgreSqlDatabase = 'postgres';\n\nexport const tableExistsSQL = (tableName: string): SQL =>\n SQL`\n SELECT EXISTS (\n SELECT FROM pg_tables\n WHERE tablename = ${tableName}\n ) AS exists;`;\n\nexport const tableExists = async (\n pool: ConnectionPool,\n tableName: string,\n): Promise<boolean> => exists(pool.execute.query(tableExistsSQL(tableName)));\n\nexport const functionExistsSQL = (functionName: string): SQL =>\n SQL`\n SELECT EXISTS (\n SELECT FROM pg_proc\n WHERE\n proname = ${functionName}\n ) AS exists;`;\n\nexport const functionExists = async (\n pool: ConnectionPool,\n tableName: string,\n): Promise<boolean> => exists(pool.execute.query(functionExistsSQL(tableName)));\n","import type { DatabaseConnectionString } from '../../../all';\nimport { defaultPostgreSqlDatabase } from '../schema';\n\nexport const defaultPostgreSQLConnectionString: PostgreSQLConnectionString =\n 'postgresql://postgres@localhost:5432/postgres' as PostgreSQLConnectionString;\n\nexport const getDatabaseNameOrDefault = (connectionString: string) =>\n parseDatabaseName(connectionString) ?? defaultPostgreSqlDatabase;\n\nexport type PostgreSQLConnectionString = DatabaseConnectionString<\n 'PostgreSQL',\n `postgresql://${string}` | `postgres://${string}`\n>;\n\nexport const PostgreSQLConnectionString = (\n connectionString: string,\n): PostgreSQLConnectionString => {\n if (\n !connectionString.startsWith('postgresql://') &&\n !connectionString.startsWith('postgres://')\n ) {\n throw new Error(\n `Invalid PostgreSQL connection string: ${connectionString}. It should start with \"postgresql://\".`,\n );\n }\n return connectionString as PostgreSQLConnectionString;\n};\n\n// Stripped from https://github.com/brianc/node-postgres\n// Copyright (c) 2010-2014 Brian Carlson (brian.m.carlson@gmail.com)\n// MIT License\n/**\n * Parse database name from a PostgreSQL connection string\n */\nexport function parseDatabaseName(str: string): string | null {\n // Unix socket format: /path/to/socket database_name\n if (str.charAt(0) === '/') {\n const parts = str.split(' ');\n return parts[1] || null;\n }\n\n // Encode spaces if present\n if (/ |%[^a-f0-9]|%[a-f0-9][^a-f0-9]/i.test(str)) {\n str = encodeURI(str).replace(/%25(\\d\\d)/g, '%$1');\n }\n\n let result: URL;\n try {\n result = new URL(str, 'postgres://base');\n } catch {\n // Try with dummy host for malformed URLs\n try {\n result = new URL(str.replace('@/', '@___DUMMY___/'), 'postgres://base');\n } catch {\n return null;\n }\n }\n\n // Socket protocol: socket://path?db=dbname\n if (result.protocol === 'socket:') {\n return result.searchParams.get('db');\n }\n\n // Standard URL: postgres://user:pass@host:port/database\n const pathname = result.pathname.slice(1) || null;\n return pathname ? decodeURI(pathname) : null;\n}\n","import type { SQLIn } from '../../../../../core';\nimport {\n SQLArray,\n SQLProcessor,\n type SQLProcessorContext,\n} from '../../../../../core';\n\nexport const PostgreSQLArrayProcessor: SQLProcessor<SQLArray> = SQLProcessor({\n canHandle: 'SQL_ARRAY',\n handle: (\n token: SQLArray,\n { builder, mapper, serializer }: SQLProcessorContext,\n ) => {\n if (token.value.length === 0) {\n throw new Error(\n \"Empty arrays are not supported. If you're using it with SELECT IN statement Use SQL.in(column, array) helper instead.\",\n );\n }\n const mappedValue = mapper.mapValue(token.value, serializer) as unknown[];\n\n if (token.mode === 'params') {\n builder.addParams(mappedValue);\n } else {\n builder.addParam(mappedValue);\n }\n },\n});\n\nexport const PostgreSQLExpandSQLInProcessor: SQLProcessor<SQLIn> = SQLProcessor(\n {\n canHandle: 'SQL_IN',\n handle: (token: SQLIn, context: SQLProcessorContext) => {\n const { builder, mapper, processorsRegistry } = context;\n const { values: inValues, column, mode } = token;\n\n if (inValues.value.length === 0) {\n builder.addParam(mapper.mapValue(false, context.serializer));\n return;\n }\n\n builder.addSQL(\n mapper.mapValue(column.value, context.serializer) as string,\n );\n const arrayProcessor = processorsRegistry.get(SQLArray.type);\n\n if (!arrayProcessor) {\n throw new Error(\n 'No sql processor registered for an array. Cannot expand IN statement',\n );\n }\n\n if (mode === 'params') {\n builder.addSQL(` IN (`);\n const expandedArray = { ...inValues, mode: 'params' as const };\n arrayProcessor.handle(expandedArray, context);\n builder.addSQL(`)`);\n } else {\n builder.addSQL(` = ANY (`);\n arrayProcessor.handle(inValues, context);\n builder.addSQL(`)`);\n }\n },\n },\n);\n","import {\n mapDefaultSQLColumnProcessors,\n type DefaultSQLColumnProcessors,\n type DefaultSQLColumnToken,\n type SQLProcessorContext,\n} from '../../../../../core';\n\nconst mapColumnType = (\n token: DefaultSQLColumnToken,\n { builder }: SQLProcessorContext,\n): void => {\n let columnSQL: string;\n const { sqlTokenType } = token;\n switch (sqlTokenType) {\n case 'SQL_COLUMN_AUTO_INCREMENT':\n columnSQL = `${token.bigint ? 'BIGSERIAL' : 'SERIAL'} ${token.primaryKey ? 'PRIMARY KEY' : ''}`;\n break;\n case 'SQL_COLUMN_BIGINT':\n columnSQL = 'BIGINT';\n break;\n case 'SQL_COLUMN_SERIAL':\n columnSQL = 'SERIAL';\n break;\n case 'SQL_COLUMN_INTEGER':\n columnSQL = 'INTEGER';\n break;\n case 'SQL_COLUMN_JSONB':\n columnSQL = 'JSONB';\n break;\n case 'SQL_COLUMN_BIGSERIAL':\n columnSQL = 'BIGSERIAL';\n break;\n case 'SQL_COLUMN_TIMESTAMP':\n columnSQL = 'TIMESTAMP';\n break;\n case 'SQL_COLUMN_TIMESTAMPTZ':\n columnSQL = 'TIMESTAMPTZ';\n break;\n case 'SQL_COLUMN_VARCHAR':\n columnSQL = `VARCHAR ${Number.isNaN(token.length) ? '' : `(${token.length})`}`;\n break;\n default: {\n const exhaustiveCheck: never = sqlTokenType;\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n throw new Error(`Unknown column type: ${exhaustiveCheck}`);\n }\n }\n builder.addSQL(columnSQL);\n};\n\nexport const postgreSQLColumnProcessors: DefaultSQLColumnProcessors =\n mapDefaultSQLColumnProcessors(mapColumnType);\n","// Ported from: https://github.com/datalanche/node-pg-format/blob/master/lib/reserved.js\n//\n// PostgreSQL reserved words\n//\nconst reservedMap: { [key: string]: boolean } = {\n AES128: true,\n AES256: true,\n ALL: true,\n ALLOWOVERWRITE: true,\n ANALYSE: true,\n ANALYZE: true,\n AND: true,\n ANY: true,\n ARRAY: true,\n AS: true,\n ASC: true,\n AUTHORIZATION: true,\n BACKUP: true,\n BETWEEN: true,\n BINARY: true,\n BLANKSASNULL: true,\n BOTH: true,\n BYTEDICT: true,\n CASE: true,\n CAST: true,\n CHECK: true,\n COLLATE: true,\n COLUMN: true,\n CONSTRAINT: true,\n CREATE: true,\n CREDENTIALS: true,\n CROSS: true,\n CURRENT_DATE: true,\n CURRENT_TIME: true,\n CURRENT_TIMESTAMP: true,\n CURRENT_USER: true,\n CURRENT_USER_ID: true,\n DEFAULT: true,\n DEFERRABLE: true,\n DEFLATE: true,\n DEFRAG: true,\n DELTA: true,\n DELTA32K: true,\n DESC: true,\n DISABLE: true,\n DISTINCT: true,\n DO: true,\n ELSE: true,\n EMPTYASNULL: true,\n ENABLE: true,\n ENCODE: true,\n ENCRYPT: true,\n ENCRYPTION: true,\n END: true,\n EXCEPT: true,\n EXPLICIT: true,\n FALSE: true,\n FOR: true,\n FOREIGN: true,\n FREEZE: true,\n FROM: true,\n FULL: true,\n GLOBALDICT256: true,\n GLOBALDICT64K: true,\n GRANT: true,\n GROUP: true,\n GZIP: true,\n HAVING: true,\n IDENTITY: true,\n IGNORE: true,\n ILIKE: true,\n IN: true,\n INITIALLY: true,\n INNER: true,\n INTERSECT: true,\n INTO: true,\n IS: true,\n ISNULL: true,\n JOIN: true,\n LEADING: true,\n LEFT: true,\n LIKE: true,\n LIMIT: true,\n LOCALTIME: true,\n LOCALTIMESTAMP: true,\n LUN: true,\n LUNS: true,\n LZO: true,\n LZOP: true,\n MINUS: true,\n MOSTLY13: true,\n MOSTLY32: true,\n MOSTLY8: true,\n NATURAL: true,\n NEW: true,\n NOT: true,\n NOTNULL: true,\n NULL: true,\n NULLS: true,\n OFF: true,\n OFFLINE: true,\n OFFSET: true,\n OLD: true,\n ON: true,\n ONLY: true,\n OPEN: true,\n OR: true,\n ORDER: true,\n OUTER: true,\n OVERLAPS: true,\n PARALLEL: true,\n PARTITION: true,\n PERCENT: true,\n PLACING: true,\n PRIMARY: true,\n RAW: true,\n READRATIO: true,\n RECOVER: true,\n REFERENCES: true,\n REJECTLOG: true,\n RESORT: true,\n RESTORE: true,\n RIGHT: true,\n SELECT: true,\n SESSION_USER: true,\n SIMILAR: true,\n SOME: true,\n SYSDATE: true,\n SYSTEM: true,\n TABLE: true,\n TAG: true,\n TDES: true,\n TEXT255: true,\n TEXT32K: true,\n THEN: true,\n TO: true,\n TOP: true,\n TRAILING: true,\n TRUE: true,\n TRUNCATECOLUMNS: true,\n UNION: true,\n UNIQUE: true,\n USER: true,\n USING: true,\n VERBOSE: true,\n WALLET: true,\n WHEN: true,\n WHERE: true,\n WITH: true,\n WITHOUT: true,\n};\n\nexport default reservedMap;\n","import {\n defaultProcessorsRegistry,\n mapSQLIdentifier,\n registerFormatter,\n SQLFormatter,\n SQLProcessorsRegistry,\n} from '../../../../../core';\nimport {\n PostgreSQLArrayProcessor,\n postgreSQLColumnProcessors,\n PostgreSQLExpandSQLInProcessor,\n} from '../processors';\nimport reservedMap from './reserved';\n\nconst postgreSQLProcessorsRegistry = SQLProcessorsRegistry({\n from: defaultProcessorsRegistry,\n})\n .register(postgreSQLColumnProcessors)\n .register(PostgreSQLArrayProcessor, PostgreSQLExpandSQLInProcessor);\n\nconst pgFormatter: SQLFormatter = SQLFormatter({\n processorsRegistry: postgreSQLProcessorsRegistry,\n valueMapper: {\n mapDate: (value: Date): unknown =>\n value.toISOString().replace('T', ' ').replace('Z', '+00'),\n mapPlaceholder: (index: number): string => `$${index + 1}`,\n mapIdentifier: (value: string): string =>\n mapSQLIdentifier(value, { reservedWords: reservedMap }),\n mapArray: (values: unknown[]): unknown[] => values,\n },\n});\n\nregisterFormatter('PostgreSQL', pgFormatter);\n\n// Export the original functions if needed\nexport { pgFormatter };\n","import type { DatabaseDriverType } from '../../../core';\n\nexport * from './connections';\nexport * from './locks';\nexport * from './schema';\nexport * from './sql';\n\nexport type PostgreSQLDatabaseName = 'PostgreSQL';\nexport const PostgreSQLDatabaseName = 'PostgreSQL';\n\nexport type PostgreSQLDriverType<DriverName extends string = string> =\n DatabaseDriverType<PostgreSQLDatabaseName, DriverName>;\n"],"mappings":"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","names":["advisoryLock"]}