@warlock.js/cascade 4.0.142 → 4.0.144

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 (57) hide show
  1. package/cjs/contracts/database-driver.contract.d.ts +14 -0
  2. package/cjs/contracts/database-driver.contract.d.ts.map +1 -1
  3. package/cjs/drivers/postgres/postgres-driver.d.ts +6 -0
  4. package/cjs/drivers/postgres/postgres-driver.d.ts.map +1 -1
  5. package/cjs/drivers/postgres/postgres-driver.js +8 -1
  6. package/cjs/drivers/postgres/postgres-driver.js.map +1 -1
  7. package/cjs/drivers/postgres/postgres-sql-serializer.d.ts +37 -0
  8. package/cjs/drivers/postgres/postgres-sql-serializer.d.ts.map +1 -0
  9. package/cjs/drivers/postgres/postgres-sql-serializer.js +394 -0
  10. package/cjs/drivers/postgres/postgres-sql-serializer.js.map +1 -0
  11. package/cjs/migration/migration-runner.d.ts +32 -1
  12. package/cjs/migration/migration-runner.d.ts.map +1 -1
  13. package/cjs/migration/migration-runner.js +216 -46
  14. package/cjs/migration/migration-runner.js.map +1 -1
  15. package/cjs/migration/migration.d.ts +35 -3
  16. package/cjs/migration/migration.d.ts.map +1 -1
  17. package/cjs/migration/migration.js +29 -3
  18. package/cjs/migration/migration.js.map +1 -1
  19. package/cjs/migration/sql-grammar.d.ts +18 -0
  20. package/cjs/migration/sql-grammar.d.ts.map +1 -0
  21. package/cjs/migration/sql-grammar.js +77 -0
  22. package/cjs/migration/sql-grammar.js.map +1 -0
  23. package/cjs/migration/sql-serializer.d.ts +22 -0
  24. package/cjs/migration/sql-serializer.d.ts.map +1 -0
  25. package/cjs/migration/sql-serializer.js +26 -0
  26. package/cjs/migration/sql-serializer.js.map +1 -0
  27. package/cjs/migration/types.d.ts +13 -0
  28. package/cjs/migration/types.d.ts.map +1 -1
  29. package/esm/contracts/database-driver.contract.d.ts +14 -0
  30. package/esm/contracts/database-driver.contract.d.ts.map +1 -1
  31. package/esm/drivers/postgres/postgres-driver.d.ts +6 -0
  32. package/esm/drivers/postgres/postgres-driver.d.ts.map +1 -1
  33. package/esm/drivers/postgres/postgres-driver.js +8 -1
  34. package/esm/drivers/postgres/postgres-driver.js.map +1 -1
  35. package/esm/drivers/postgres/postgres-sql-serializer.d.ts +37 -0
  36. package/esm/drivers/postgres/postgres-sql-serializer.d.ts.map +1 -0
  37. package/esm/drivers/postgres/postgres-sql-serializer.js +394 -0
  38. package/esm/drivers/postgres/postgres-sql-serializer.js.map +1 -0
  39. package/esm/migration/migration-runner.d.ts +32 -1
  40. package/esm/migration/migration-runner.d.ts.map +1 -1
  41. package/esm/migration/migration-runner.js +216 -46
  42. package/esm/migration/migration-runner.js.map +1 -1
  43. package/esm/migration/migration.d.ts +35 -3
  44. package/esm/migration/migration.d.ts.map +1 -1
  45. package/esm/migration/migration.js +29 -3
  46. package/esm/migration/migration.js.map +1 -1
  47. package/esm/migration/sql-grammar.d.ts +18 -0
  48. package/esm/migration/sql-grammar.d.ts.map +1 -0
  49. package/esm/migration/sql-grammar.js +77 -0
  50. package/esm/migration/sql-grammar.js.map +1 -0
  51. package/esm/migration/sql-serializer.d.ts +22 -0
  52. package/esm/migration/sql-serializer.d.ts.map +1 -0
  53. package/esm/migration/sql-serializer.js +26 -0
  54. package/esm/migration/sql-serializer.js.map +1 -0
  55. package/esm/migration/types.d.ts +13 -0
  56. package/esm/migration/types.d.ts.map +1 -1
  57. package/package.json +4 -4
@@ -0,0 +1,394 @@
1
+ 'use strict';var sqlSerializer=require('../../migration/sql-serializer.js');/**
2
+ * PostgreSQL-specific SQL serializer.
3
+ *
4
+ * Converts pending migration operations into valid PostgreSQL DDL statements.
5
+ */
6
+ class PostgresSQLSerializer extends sqlSerializer.SQLSerializer {
7
+ dialect;
8
+ constructor(dialect) {
9
+ super();
10
+ this.dialect = dialect;
11
+ }
12
+ serialize(operation, table) {
13
+ switch (operation.type) {
14
+ case "createTable":
15
+ return this.createTable(table);
16
+ case "createTableIfNotExists":
17
+ return this.createTableIfNotExists(table);
18
+ case "dropTable":
19
+ return this.dropTable(table);
20
+ case "dropTableIfExists":
21
+ return this.dropTableIfExists(table);
22
+ case "renameTable":
23
+ return this.renameTable(table, operation.payload);
24
+ case "truncateTable":
25
+ return this.truncateTable(table);
26
+ case "addColumn":
27
+ return this.addColumn(table, operation.payload);
28
+ case "dropColumn":
29
+ return this.dropColumn(table, operation.payload);
30
+ case "dropColumns":
31
+ // This is handled via map in serializeAll or loop, but Postgres supports multiple DROP COLUMN
32
+ // For simplicity, we can serialize multiple statements if we want, or handle it here
33
+ // Actually, dropColumns payload is string[]. We can join them.
34
+ return this.dropColumns(table, operation.payload);
35
+ case "renameColumn": {
36
+ const payload = operation.payload;
37
+ return this.renameColumn(table, payload.from, payload.to);
38
+ }
39
+ case "modifyColumn":
40
+ // Modify column might require multiple statements in Postgres (type, nullability, default).
41
+ // SQLSerializer's serialize return is just a string, so we'll separate them by semicolon
42
+ // Or wait, Postgres allows multiple ALTER COLUMN in one ALTER TABLE statement.
43
+ return this.modifyColumn(table, operation.payload);
44
+ case "createIndex":
45
+ return this.createIndex(table, operation.payload);
46
+ case "dropIndex":
47
+ return this.dropIndex(table, operation.payload);
48
+ case "createUniqueIndex": {
49
+ const payload = operation.payload;
50
+ return this.createIndex(table, { columns: payload.columns, name: payload.name, unique: true });
51
+ }
52
+ case "dropUniqueIndex":
53
+ return this.dropIndex(table, operation.payload);
54
+ case "createFullTextIndex": {
55
+ const payload = operation.payload;
56
+ return this.createFullTextIndex(table, payload.columns, payload.options);
57
+ }
58
+ case "dropFullTextIndex":
59
+ return this.dropIndex(table, operation.payload);
60
+ case "createGeoIndex": {
61
+ const payload = operation.payload;
62
+ return this.createGeoIndex(table, payload.column, payload.options);
63
+ }
64
+ case "dropGeoIndex":
65
+ return this.dropIndex(table, `idx_${table}_geo_${operation.payload}`);
66
+ case "createVectorIndex": {
67
+ const payload = operation.payload;
68
+ return this.createVectorIndex(table, payload.column, payload.options);
69
+ }
70
+ case "dropVectorIndex":
71
+ return this.dropIndex(table, `idx_${table}_vector_${operation.payload}`);
72
+ case "createTTLIndex": {
73
+ const payload = operation.payload;
74
+ return this.createTTLIndex(table, payload.column, payload.expireAfterSeconds);
75
+ }
76
+ case "dropTTLIndex":
77
+ return this.dropIndex(table, `idx_${table}_ttl_${operation.payload}`);
78
+ case "addForeignKey":
79
+ return this.addForeignKey(table, operation.payload);
80
+ case "dropForeignKey":
81
+ return this.dropForeignKey(table, operation.payload);
82
+ case "addPrimaryKey":
83
+ return this.addPrimaryKey(table, operation.payload);
84
+ case "dropPrimaryKey":
85
+ return this.dropPrimaryKey(table);
86
+ case "addCheck":
87
+ // addCheck is not natively implemented in MigrationDriverContract but exists in OperationType
88
+ return null;
89
+ case "dropCheck":
90
+ return null;
91
+ case "createTimestamps":
92
+ // createTimestamps needs to inject two columns. We return two statements.
93
+ return this.createTimestamps(table);
94
+ case "rawStatement": {
95
+ const payload = operation.payload;
96
+ // ensure string doesn't end with a semicolon if it's already one statement
97
+ return payload;
98
+ }
99
+ case "setSchemaValidation":
100
+ case "removeSchemaValidation":
101
+ // Not implemented in PostgreSQL
102
+ return null;
103
+ default:
104
+ return null;
105
+ }
106
+ }
107
+ // ============================================================================
108
+ // TABLE OPERATIONS
109
+ // ============================================================================
110
+ createTable(table) {
111
+ const quotedTable = this.dialect.quoteIdentifier(table);
112
+ return `CREATE TABLE ${quotedTable} ()`;
113
+ }
114
+ createTableIfNotExists(table) {
115
+ const quotedTable = this.dialect.quoteIdentifier(table);
116
+ return `CREATE TABLE IF NOT EXISTS ${quotedTable} ()`;
117
+ }
118
+ dropTable(table) {
119
+ const quotedTable = this.dialect.quoteIdentifier(table);
120
+ return `DROP TABLE ${quotedTable} CASCADE`;
121
+ }
122
+ dropTableIfExists(table) {
123
+ const quotedTable = this.dialect.quoteIdentifier(table);
124
+ return `DROP TABLE IF EXISTS ${quotedTable} CASCADE`;
125
+ }
126
+ renameTable(from, to) {
127
+ const quotedFrom = this.dialect.quoteIdentifier(from);
128
+ const quotedTo = this.dialect.quoteIdentifier(to);
129
+ return `ALTER TABLE ${quotedFrom} RENAME TO ${quotedTo}`;
130
+ }
131
+ truncateTable(table) {
132
+ const quotedTable = this.dialect.quoteIdentifier(table);
133
+ return `TRUNCATE TABLE ${quotedTable}`;
134
+ }
135
+ // ============================================================================
136
+ // COLUMN OPERATIONS
137
+ // ============================================================================
138
+ addColumn(table, column) {
139
+ const quotedTable = this.dialect.quoteIdentifier(table);
140
+ const quotedColumn = this.dialect.quoteIdentifier(column.name);
141
+ let sqlType;
142
+ if (column.autoIncrement) {
143
+ if (column.type === "bigInteger") {
144
+ sqlType = "BIGSERIAL";
145
+ }
146
+ else {
147
+ sqlType = "SERIAL";
148
+ }
149
+ }
150
+ else {
151
+ sqlType = this.dialect.getSqlType(column.type, {
152
+ length: column.length,
153
+ precision: column.precision,
154
+ scale: column.scale,
155
+ dimensions: column.dimensions,
156
+ });
157
+ }
158
+ let sql = `ALTER TABLE ${quotedTable} ADD COLUMN ${quotedColumn} ${sqlType}`;
159
+ if (column.generated) {
160
+ sql += ` GENERATED ALWAYS AS (${column.generated.expression})`;
161
+ if (column.generated.stored) {
162
+ sql += " STORED";
163
+ }
164
+ }
165
+ else {
166
+ if (!column.autoIncrement && column.nullable === false) {
167
+ sql += " NOT NULL";
168
+ }
169
+ if (column.defaultValue !== undefined) {
170
+ if (typeof column.defaultValue === "object" &&
171
+ column.defaultValue !== null &&
172
+ column.defaultValue.__type === "CURRENT_TIMESTAMP") {
173
+ sql += " DEFAULT NOW()";
174
+ }
175
+ else if (column.isRawDefault === false) {
176
+ const escaped = String(column.defaultValue).replace(/'/g, "''");
177
+ sql += ` DEFAULT '${escaped}'`;
178
+ }
179
+ else if (typeof column.defaultValue === "boolean") {
180
+ sql += ` DEFAULT ${column.defaultValue ? "TRUE" : "FALSE"}`;
181
+ }
182
+ else if (typeof column.defaultValue === "number") {
183
+ sql += ` DEFAULT ${column.defaultValue}`;
184
+ }
185
+ else {
186
+ sql += ` DEFAULT ${column.defaultValue}`; // raw default
187
+ }
188
+ }
189
+ if (column.primary) {
190
+ sql += " PRIMARY KEY";
191
+ }
192
+ if (column.unique) {
193
+ sql += " UNIQUE";
194
+ }
195
+ }
196
+ return sql;
197
+ }
198
+ dropColumn(table, column) {
199
+ const quotedTable = this.dialect.quoteIdentifier(table);
200
+ const quotedColumn = this.dialect.quoteIdentifier(column);
201
+ return `ALTER TABLE ${quotedTable} DROP COLUMN ${quotedColumn}`;
202
+ }
203
+ dropColumns(table, columns) {
204
+ const quotedTable = this.dialect.quoteIdentifier(table);
205
+ const drops = columns.map((col) => `DROP COLUMN ${this.dialect.quoteIdentifier(col)}`).join(", ");
206
+ return `ALTER TABLE ${quotedTable} ${drops}`;
207
+ }
208
+ renameColumn(table, from, to) {
209
+ const quotedTable = this.dialect.quoteIdentifier(table);
210
+ const quotedFrom = this.dialect.quoteIdentifier(from);
211
+ const quotedTo = this.dialect.quoteIdentifier(to);
212
+ return `ALTER TABLE ${quotedTable} RENAME COLUMN ${quotedFrom} TO ${quotedTo}`;
213
+ }
214
+ modifyColumn(table, column) {
215
+ const quotedTable = this.dialect.quoteIdentifier(table);
216
+ const quotedColumn = this.dialect.quoteIdentifier(column.name);
217
+ const sqlType = this.dialect.getSqlType(column.type, {
218
+ length: column.length,
219
+ precision: column.precision,
220
+ scale: column.scale,
221
+ dimensions: column.dimensions,
222
+ });
223
+ const alters = [];
224
+ alters.push(`ALTER COLUMN ${quotedColumn} TYPE ${sqlType}`);
225
+ if (column.nullable === false) {
226
+ alters.push(`ALTER COLUMN ${quotedColumn} SET NOT NULL`);
227
+ }
228
+ else if (column.nullable === true) {
229
+ alters.push(`ALTER COLUMN ${quotedColumn} DROP NOT NULL`);
230
+ }
231
+ if (column.defaultValue !== undefined) {
232
+ let defaultVal;
233
+ if (typeof column.defaultValue === "object" &&
234
+ column.defaultValue !== null &&
235
+ column.defaultValue.__type === "CURRENT_TIMESTAMP") {
236
+ defaultVal = "NOW()";
237
+ }
238
+ else if (typeof column.defaultValue === "string") {
239
+ defaultVal = `'${column.defaultValue}'`;
240
+ }
241
+ else {
242
+ defaultVal = String(column.defaultValue);
243
+ }
244
+ alters.push(`ALTER COLUMN ${quotedColumn} SET DEFAULT ${defaultVal}`);
245
+ }
246
+ return `ALTER TABLE ${quotedTable} ${alters.join(", ")}`;
247
+ }
248
+ createTimestamps(table) {
249
+ const quotedTable = this.dialect.quoteIdentifier(table);
250
+ return [
251
+ `ALTER TABLE ${quotedTable} ADD COLUMN "created_at" TIMESTAMPTZ NOT NULL DEFAULT NOW()`,
252
+ `ALTER TABLE ${quotedTable} ADD COLUMN "updated_at" TIMESTAMPTZ NOT NULL DEFAULT NOW()`,
253
+ ];
254
+ }
255
+ // ============================================================================
256
+ // INDEX OPERATIONS
257
+ // ============================================================================
258
+ createIndex(table, index) {
259
+ const quotedTable = this.dialect.quoteIdentifier(table);
260
+ let indexName;
261
+ if (index.name) {
262
+ indexName = index.name;
263
+ }
264
+ else {
265
+ const colStr = Array.isArray(index.columns) ? index.columns.join("_") : index.columns;
266
+ indexName = `idx_${table}_${colStr}`;
267
+ }
268
+ const quotedIndexName = this.dialect.quoteIdentifier(indexName);
269
+ const uniqueKeyword = index.unique ? "UNIQUE " : "";
270
+ const concurrentlyKeyword = index.concurrently ? "CONCURRENTLY " : "";
271
+ let columnsPart;
272
+ if (index.expressions && index.expressions.length > 0) {
273
+ columnsPart = index.expressions.map((expr) => `(${expr})`).join(", ");
274
+ }
275
+ else {
276
+ const columns = index.columns.map((col, i) => {
277
+ const quotedCol = this.dialect.quoteIdentifier(col);
278
+ const direction = index.directions?.[i]?.toUpperCase() ?? "";
279
+ return direction ? `${quotedCol} ${direction}` : quotedCol;
280
+ });
281
+ columnsPart = columns.join(", ");
282
+ }
283
+ let sql = `CREATE ${uniqueKeyword}INDEX ${concurrentlyKeyword}${quotedIndexName} ON ${quotedTable} (${columnsPart})`;
284
+ if (index.include && index.include.length > 0) {
285
+ const includeCols = index.include.map((col) => this.dialect.quoteIdentifier(col)).join(", ");
286
+ sql += ` INCLUDE (${includeCols})`;
287
+ }
288
+ if (index.where && Object.keys(index.where).length > 0) {
289
+ const conditions = Object.entries(index.where)
290
+ .map(([key, value]) => {
291
+ const quotedKey = this.dialect.quoteIdentifier(key);
292
+ return typeof value === "string" ? `${quotedKey} = '${value}'` : `${quotedKey} = ${value}`;
293
+ })
294
+ .join(" AND ");
295
+ sql += ` WHERE ${conditions}`;
296
+ }
297
+ return sql;
298
+ }
299
+ dropIndex(table, indexNameOrColumns) {
300
+ let indexName;
301
+ if (typeof indexNameOrColumns === "string") {
302
+ indexName = indexNameOrColumns;
303
+ }
304
+ else {
305
+ indexName = `idx_${table}_${indexNameOrColumns.join("_")}`;
306
+ }
307
+ const quotedIndexName = this.dialect.quoteIdentifier(indexName);
308
+ return `DROP INDEX IF EXISTS ${quotedIndexName}`;
309
+ }
310
+ createFullTextIndex(table, columns, options) {
311
+ const quotedTable = this.dialect.quoteIdentifier(table);
312
+ const indexName = options?.name ?? `idx_${table}_fulltext_${columns.join("_")}`;
313
+ const quotedIndexName = this.dialect.quoteIdentifier(indexName);
314
+ const language = options?.language ?? "english";
315
+ const tsvectors = columns.map((col) => {
316
+ const weight = options?.weights?.[col] ?? "A";
317
+ return `setweight(to_tsvector('${language}', COALESCE(${this.dialect.quoteIdentifier(col)}, '')), '${weight}')`;
318
+ });
319
+ return `CREATE INDEX ${quotedIndexName} ON ${quotedTable} USING GIN ((${tsvectors.join(" || ")}))`;
320
+ }
321
+ createGeoIndex(table, column, options) {
322
+ const quotedTable = this.dialect.quoteIdentifier(table);
323
+ const quotedColumn = this.dialect.quoteIdentifier(column);
324
+ const indexName = options?.name ?? `idx_${table}_geo_${column}`;
325
+ const quotedIndexName = this.dialect.quoteIdentifier(indexName);
326
+ return `CREATE INDEX ${quotedIndexName} ON ${quotedTable} USING GIST (${quotedColumn})`;
327
+ }
328
+ createVectorIndex(table, column, options) {
329
+ const quotedTable = this.dialect.quoteIdentifier(table);
330
+ const quotedColumn = this.dialect.quoteIdentifier(column);
331
+ const indexName = options.name ?? `idx_${table}_vector_${column}`;
332
+ const quotedIndexName = this.dialect.quoteIdentifier(indexName);
333
+ const opClass = options.similarity === "euclidean"
334
+ ? "vector_l2_ops"
335
+ : options.similarity === "dotProduct"
336
+ ? "vector_ip_ops"
337
+ : "vector_cosine_ops";
338
+ const lists = options.lists ?? 100;
339
+ return `CREATE INDEX ${quotedIndexName} ON ${quotedTable} USING ivfflat (${quotedColumn} ${opClass}) WITH (lists = ${lists})`;
340
+ }
341
+ createTTLIndex(table, column, expireAfterSeconds) {
342
+ const quotedTable = this.dialect.quoteIdentifier(table);
343
+ const quotedColumn = this.dialect.quoteIdentifier(column);
344
+ const indexName = `idx_${table}_ttl_${column}`;
345
+ const quotedIndexName = this.dialect.quoteIdentifier(indexName);
346
+ return `CREATE INDEX ${quotedIndexName} ON ${quotedTable} (${quotedColumn}) WHERE ${quotedColumn} < NOW() - INTERVAL '${expireAfterSeconds} seconds'`;
347
+ }
348
+ // ============================================================================
349
+ // CONSTRAINTS
350
+ // ============================================================================
351
+ addForeignKey(table, foreignKey) {
352
+ const quotedTable = this.dialect.quoteIdentifier(table);
353
+ const quotedColumn = this.dialect.quoteIdentifier(foreignKey.column);
354
+ const quotedRefTable = this.dialect.quoteIdentifier(foreignKey.referencesTable);
355
+ const quotedRefColumn = this.dialect.quoteIdentifier(foreignKey.referencesColumn);
356
+ const constraintName = foreignKey.name ?? `fk_${table}_${foreignKey.column}_${foreignKey.referencesTable}`;
357
+ const quotedConstraint = this.dialect.quoteIdentifier(constraintName);
358
+ let sql = `ALTER TABLE ${quotedTable} ADD CONSTRAINT ${quotedConstraint} FOREIGN KEY (${quotedColumn}) REFERENCES ${quotedRefTable} (${quotedRefColumn})`;
359
+ if (foreignKey.onDelete) {
360
+ sql += ` ON DELETE ${this.mapForeignKeyAction(foreignKey.onDelete)}`;
361
+ }
362
+ if (foreignKey.onUpdate) {
363
+ sql += ` ON UPDATE ${this.mapForeignKeyAction(foreignKey.onUpdate)}`;
364
+ }
365
+ return sql;
366
+ }
367
+ dropForeignKey(table, name) {
368
+ const quotedTable = this.dialect.quoteIdentifier(table);
369
+ const quotedConstraint = this.dialect.quoteIdentifier(name);
370
+ return `ALTER TABLE ${quotedTable} DROP CONSTRAINT ${quotedConstraint}`;
371
+ }
372
+ addPrimaryKey(table, columns) {
373
+ const quotedTable = this.dialect.quoteIdentifier(table);
374
+ const quotedColumns = columns.map((c) => this.dialect.quoteIdentifier(c)).join(", ");
375
+ const constraintName = `pk_${table}`;
376
+ const quotedConstraint = this.dialect.quoteIdentifier(constraintName);
377
+ return `ALTER TABLE ${quotedTable} ADD CONSTRAINT ${quotedConstraint} PRIMARY KEY (${quotedColumns})`;
378
+ }
379
+ dropPrimaryKey(table) {
380
+ const quotedTable = this.dialect.quoteIdentifier(table);
381
+ const constraintName = `pk_${table}`;
382
+ const quotedConstraint = this.dialect.quoteIdentifier(constraintName);
383
+ return `ALTER TABLE ${quotedTable} DROP CONSTRAINT ${quotedConstraint}`;
384
+ }
385
+ mapForeignKeyAction(action) {
386
+ switch (action) {
387
+ case "cascade": return "CASCADE";
388
+ case "restrict": return "RESTRICT";
389
+ case "setNull": return "SET NULL";
390
+ case "noAction": return "NO ACTION";
391
+ default: return "NO ACTION";
392
+ }
393
+ }
394
+ }exports.PostgresSQLSerializer=PostgresSQLSerializer;//# sourceMappingURL=postgres-sql-serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-sql-serializer.js","sources":["../../../src/drivers/postgres/postgres-sql-serializer.ts"],"sourcesContent":[null],"names":["SQLSerializer"],"mappings":"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"}
@@ -6,7 +6,6 @@ import type { MigrationRecord, MigrationResult } from "./types";
6
6
  */
7
7
  type MigrationClass = (new () => Migration) & {
8
8
  migrationName: string;
9
- order?: number;
10
9
  createdAt?: string;
11
10
  };
12
11
  /**
@@ -159,6 +158,10 @@ export declare class MigrationRunner {
159
158
  * ```
160
159
  */
161
160
  runAll(options?: ExecuteOptions): Promise<MigrationResult[]>;
161
+ /**
162
+ * Export pending migrations as phase-ordered SQL files in database/sql/ directory.
163
+ */
164
+ exportSQL(): Promise<void>;
162
165
  /**
163
166
  * Rollback the last batch of migrations.
164
167
  *
@@ -201,6 +204,34 @@ export declare class MigrationRunner {
201
204
  * Run a single migration.
202
205
  */
203
206
  private runMigration;
207
+ /**
208
+ * Create, configure, and return a ready-to-use migration instance.
209
+ *
210
+ * Centralises the repeated "new + setDriver + setMigrationDefaults" boilerplate
211
+ * that all batch/single execution paths need.
212
+ *
213
+ * @internal
214
+ */
215
+ private createMigrationInstance;
216
+ /**
217
+ * Format an ordered array of TaggedSQL into a human-readable SQL file string.
218
+ *
219
+ * Consecutive statements that belong to the same (phase, migration) group share
220
+ * a single block comment at the top, avoiding the noisy per-statement repetition.
221
+ *
222
+ * Example output:
223
+ * ```sql
224
+ * /* Phase 3 [create-users] *\/
225
+ * ALTER TABLE "users" ADD COLUMN "name" TEXT NOT NULL;
226
+ * ALTER TABLE "users" ADD COLUMN "email" TEXT NOT NULL;
227
+ *
228
+ * /* Phase 4 [create-users] *\/
229
+ * CREATE UNIQUE INDEX ...;
230
+ * ```
231
+ *
232
+ * @internal
233
+ */
234
+ private formatSQLForExport;
204
235
  /**
205
236
  * Get pending (not executed) registered migrations.
206
237
  */
@@ -1 +1 @@
1
- {"version":3,"file":"migration-runner.d.ts","sourceRoot":"","sources":["../../src/migration/migration-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration-runner.d.ts","sourceRoot":"","sources":["../../src/migration/migration-runner.ts"],"names":[],"mappings":"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"}