@venturekit/data 0.0.0-dev.20260507015349 → 0.0.0-dev.20260511022417
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/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/migrations/dispatcher.d.ts.map +1 -1
- package/dist/migrations/dispatcher.js +2 -0
- package/dist/migrations/dispatcher.js.map +1 -1
- package/dist/migrations/errors.d.ts +14 -0
- package/dist/migrations/errors.d.ts.map +1 -1
- package/dist/migrations/errors.js +22 -0
- package/dist/migrations/errors.js.map +1 -1
- package/dist/migrations/index.d.ts +1 -1
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +1 -1
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrations/runners/custom.d.ts +9 -0
- package/dist/migrations/runners/custom.d.ts.map +1 -1
- package/dist/migrations/runners/custom.js +45 -3
- package/dist/migrations/runners/custom.js.map +1 -1
- package/dist/types/migration.d.ts +24 -0
- package/dist/types/migration.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
export * from './types/index.js';
|
|
7
7
|
export { createRdsConfig, DEFAULT_RDS_CONFIG, buildRdsConfig, } from './rds/index.js';
|
|
8
8
|
export type { RdsOutputs, RdsInfraConfig } from './rds/index.js';
|
|
9
|
-
export { createMigrationConfig, DEFAULT_MIGRATION_CONFIG, getFlywayEnv, runMigrations, getMigrationStatus, runSeeds, getSeedStatus, MIGRATIONS_TRACKING_TABLE, SEEDS_TRACKING_TABLE, MigrationToolNotImplementedError, MigrationHashMismatchError, applyDatabaseUrlToEnv, } from './migrations/index.js';
|
|
9
|
+
export { createMigrationConfig, DEFAULT_MIGRATION_CONFIG, getFlywayEnv, runMigrations, getMigrationStatus, runSeeds, getSeedStatus, MIGRATIONS_TRACKING_TABLE, SEEDS_TRACKING_TABLE, MigrationToolNotImplementedError, MigrationHashMismatchError, MigrationCollisionError, applyDatabaseUrlToEnv, } from './migrations/index.js';
|
|
10
10
|
export type { RunResult, StatusEntry, RunOptions, SeedRunOptions, } from './migrations/index.js';
|
|
11
11
|
export { query, getPool, mapResults, mapRow, configureMapper, getMapperConfig, beginTransaction, withTransaction, buildTransaction, applyDbSecretToEnv, } from './query/index.js';
|
|
12
12
|
export type { Transaction, ResultsMapper, Querier, MapperOptions, } from './query/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKjE,OAAO,EAEL,qBAAqB,EACrB,wBAAwB,EACxB,YAAY,EAEZ,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,yBAAyB,EACzB,oBAAoB,EAEpB,gCAAgC,EAChC,0BAA0B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKjE,OAAO,EAEL,qBAAqB,EACrB,wBAAwB,EACxB,YAAY,EAEZ,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,yBAAyB,EACzB,oBAAoB,EAEpB,gCAAgC,EAChC,0BAA0B,EAC1B,uBAAuB,EAGvB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,cAAc,GACf,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,KAAK,EACL,OAAO,EACP,UAAU,EACV,MAAM,EACN,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAKhB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,WAAW,EACX,aAAa,EACb,OAAO,EACP,aAAa,GACd,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -16,7 +16,7 @@ createMigrationConfig, DEFAULT_MIGRATION_CONFIG, getFlywayEnv,
|
|
|
16
16
|
// built-in runner — pure SQL, tracked in __vk_migrations / __vk_seeds
|
|
17
17
|
runMigrations, getMigrationStatus, runSeeds, getSeedStatus, MIGRATIONS_TRACKING_TABLE, SEEDS_TRACKING_TABLE,
|
|
18
18
|
// errors
|
|
19
|
-
MigrationToolNotImplementedError, MigrationHashMismatchError,
|
|
19
|
+
MigrationToolNotImplementedError, MigrationHashMismatchError, MigrationCollisionError,
|
|
20
20
|
// env-var bridge: parses DATABASE_URL into the granular DB_* vars used
|
|
21
21
|
// by getPool(). Auto-applied at the top of runMigrations / runSeeds.
|
|
22
22
|
applyDatabaseUrlToEnv, } from './migrations/index.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,MAAM;AACN,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,uEAAuE;AACvE,iEAAiE;AACjE,gDAAgD;AAChD,OAAO;AACL,4BAA4B;AAC5B,qBAAqB,EACrB,wBAAwB,EACxB,YAAY;AACZ,sEAAsE;AACtE,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,yBAAyB,EACzB,oBAAoB;AACpB,SAAS;AACT,gCAAgC,EAChC,0BAA0B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,MAAM;AACN,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,uEAAuE;AACvE,iEAAiE;AACjE,gDAAgD;AAChD,OAAO;AACL,4BAA4B;AAC5B,qBAAqB,EACrB,wBAAwB,EACxB,YAAY;AACZ,sEAAsE;AACtE,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,yBAAyB,EACzB,oBAAoB;AACpB,SAAS;AACT,gCAAgC,EAChC,0BAA0B,EAC1B,uBAAuB;AACvB,uEAAuE;AACvE,qEAAqE;AACrE,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAQ/B,kDAAkD;AAClD,OAAO,EACL,KAAK,EACL,OAAO,EACP,UAAU,EACV,MAAM,EACN,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,gBAAgB;AAChB,0DAA0D;AAC1D,mEAAmE;AACnE,iEAAiE;AACjE,gCAAgC;AAChC,kBAAkB,GACnB,MAAM,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/migrations/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAM7D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAErE,0EAA0E;AAC1E,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAE3D;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,eAAe,EACvB,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/migrations/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAM7D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAErE,0EAA0E;AAC1E,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAE3D;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,eAAe,EACvB,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,SAAS,CAAC,CAkBpB;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,WAAW,EAAE,CAAC,CAiBxB"}
|
|
@@ -33,6 +33,7 @@ export async function runMigrations(config, opts = {}) {
|
|
|
33
33
|
case 'custom':
|
|
34
34
|
return runSqlFiles({
|
|
35
35
|
dir: config.migrationsDir,
|
|
36
|
+
extraDirs: config.extraMigrationsDirs,
|
|
36
37
|
trackingTable: MIGRATIONS_TRACKING_TABLE,
|
|
37
38
|
onApply: opts.onApply,
|
|
38
39
|
});
|
|
@@ -56,6 +57,7 @@ export async function getMigrationStatus(config) {
|
|
|
56
57
|
case 'custom':
|
|
57
58
|
return getSqlFilesStatus({
|
|
58
59
|
dir: config.migrationsDir,
|
|
60
|
+
extraDirs: config.extraMigrationsDirs,
|
|
59
61
|
trackingTable: MIGRATIONS_TRACKING_TABLE,
|
|
60
62
|
});
|
|
61
63
|
case 'drizzle':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/migrations/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG3D,0EAA0E;AAC1E,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AAE3D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAuB,EACvB,OAAmB,EAAE;IAErB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,WAAW,CAAC;gBACjB,GAAG,EAAE,MAAM,CAAC,aAAa;gBACzB,aAAa,EAAE,yBAAyB;gBACxC,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,KAAK,SAAS;YACZ,OAAO,qBAAqB,EAAE,CAAC;QACjC,KAAK,QAAQ;YACX,OAAO,oBAAoB,EAAE,CAAC;QAChC,KAAK,gBAAgB;YACnB,OAAO,2BAA2B,EAAE,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,oBAAoB,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAuB;IAEvB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC;gBACvB,GAAG,EAAE,MAAM,CAAC,aAAa;gBACzB,aAAa,EAAE,yBAAyB;aACzC,CAAC,CAAC;QACL,KAAK,SAAS;YACZ,OAAO,qBAAqB,EAAE,CAAC;QACjC,KAAK,QAAQ;YACX,OAAO,oBAAoB,EAAE,CAAC;QAChC,KAAK,gBAAgB;YACnB,OAAO,2BAA2B,EAAE,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,oBAAoB,EAAE,CAAC;IAClC,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/migrations/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG3D,0EAA0E;AAC1E,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AAE3D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAuB,EACvB,OAAmB,EAAE;IAErB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,WAAW,CAAC;gBACjB,GAAG,EAAE,MAAM,CAAC,aAAa;gBACzB,SAAS,EAAE,MAAM,CAAC,mBAAmB;gBACrC,aAAa,EAAE,yBAAyB;gBACxC,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,KAAK,SAAS;YACZ,OAAO,qBAAqB,EAAE,CAAC;QACjC,KAAK,QAAQ;YACX,OAAO,oBAAoB,EAAE,CAAC;QAChC,KAAK,gBAAgB;YACnB,OAAO,2BAA2B,EAAE,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,oBAAoB,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAuB;IAEvB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC;gBACvB,GAAG,EAAE,MAAM,CAAC,aAAa;gBACzB,SAAS,EAAE,MAAM,CAAC,mBAAmB;gBACrC,aAAa,EAAE,yBAAyB;aACzC,CAAC,CAAC;QACL,KAAK,SAAS;YACZ,OAAO,qBAAqB,EAAE,CAAC;QACjC,KAAK,QAAQ;YACX,OAAO,oBAAoB,EAAE,CAAC;QAChC,KAAK,gBAAgB;YACnB,OAAO,2BAA2B,EAAE,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,oBAAoB,EAAE,CAAC;IAClC,CAAC;AACH,CAAC"}
|
|
@@ -30,4 +30,18 @@ export declare class MigrationHashMismatchError extends Error {
|
|
|
30
30
|
readonly trackingTable: string;
|
|
31
31
|
constructor(version: string, storedHash: string, currentHash: string, trackingTable: string);
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Thrown when two migration source directories ship a `.sql` file with
|
|
35
|
+
* the same basename. Silently overwriting one with the other would make
|
|
36
|
+
* the applied schema depend on the order in which directories were
|
|
37
|
+
* scanned, so we hard-fail and ask the operator to rename one.
|
|
38
|
+
*
|
|
39
|
+
* VentureKit packages prefix their files with `vk_<package>_<NNN>_*.sql`
|
|
40
|
+
* (e.g. `vk_notify_001_init.sql`); projects should avoid that prefix.
|
|
41
|
+
*/
|
|
42
|
+
export declare class MigrationCollisionError extends Error {
|
|
43
|
+
readonly filename: string;
|
|
44
|
+
readonly sources: string[];
|
|
45
|
+
constructor(filename: string, sources: string[]);
|
|
46
|
+
}
|
|
33
47
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/migrations/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,qBAAa,gCAAiC,SAAQ,KAAK;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAQvC;AAED;;;;;;GAMG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAG7B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM;CAcxB"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/migrations/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,qBAAa,gCAAiC,SAAQ,KAAK;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAQvC;AAED;;;;;;GAMG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAG7B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM;CAcxB;AAED;;;;;;;;GAQG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;gBAEf,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;CAWhD"}
|
|
@@ -45,4 +45,26 @@ export class MigrationHashMismatchError extends Error {
|
|
|
45
45
|
this.trackingTable = trackingTable;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Thrown when two migration source directories ship a `.sql` file with
|
|
50
|
+
* the same basename. Silently overwriting one with the other would make
|
|
51
|
+
* the applied schema depend on the order in which directories were
|
|
52
|
+
* scanned, so we hard-fail and ask the operator to rename one.
|
|
53
|
+
*
|
|
54
|
+
* VentureKit packages prefix their files with `vk_<package>_<NNN>_*.sql`
|
|
55
|
+
* (e.g. `vk_notify_001_init.sql`); projects should avoid that prefix.
|
|
56
|
+
*/
|
|
57
|
+
export class MigrationCollisionError extends Error {
|
|
58
|
+
filename;
|
|
59
|
+
sources;
|
|
60
|
+
constructor(filename, sources) {
|
|
61
|
+
super(`[migrate] Migration filename collision: '${filename}' is shipped by ` +
|
|
62
|
+
`multiple sources:\n - ${sources.join('\n - ')}\n` +
|
|
63
|
+
`Rename one to resolve. (VentureKit packages prefix their migrations ` +
|
|
64
|
+
`with 'vk_<package>_'; project migrations should avoid that prefix.)`);
|
|
65
|
+
this.name = 'MigrationCollisionError';
|
|
66
|
+
this.filename = filename;
|
|
67
|
+
this.sources = sources;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
48
70
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/migrations/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,MAAM,OAAO,gCAAiC,SAAQ,KAAK;IAChD,IAAI,CAAS;IACb,IAAI,CAAS;IAEtB,YAAY,IAAY,EAAE,IAAY;QACpC,KAAK,CACH,8BAA8B,IAAI,6CAA6C,IAAI,EAAE,CACtF,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAC1C,OAAO,CAAS;IAChB,UAAU,CAAS;IACnB,WAAW,CAAS;IACpB,aAAa,CAAS;IAE/B,YACE,OAAe,EACf,UAAkB,EAClB,WAAmB,EACnB,aAAqB;QAErB,KAAK,CACH,mBAAmB,OAAO,iDAAiD;YACzE,eAAe,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO;YAC1F,6EAA6E;YAC7E,qBAAqB,aAAa,oBAAoB,aAAa,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,8BAA8B,CAC5I,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/migrations/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,MAAM,OAAO,gCAAiC,SAAQ,KAAK;IAChD,IAAI,CAAS;IACb,IAAI,CAAS;IAEtB,YAAY,IAAY,EAAE,IAAY;QACpC,KAAK,CACH,8BAA8B,IAAI,6CAA6C,IAAI,EAAE,CACtF,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAC1C,OAAO,CAAS;IAChB,UAAU,CAAS;IACnB,WAAW,CAAS;IACpB,aAAa,CAAS;IAE/B,YACE,OAAe,EACf,UAAkB,EAClB,WAAmB,EACnB,aAAqB;QAErB,KAAK,CACH,mBAAmB,OAAO,iDAAiD;YACzE,eAAe,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO;YAC1F,6EAA6E;YAC7E,qBAAqB,aAAa,oBAAoB,aAAa,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,8BAA8B,CAC5I,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACvC,QAAQ,CAAS;IACjB,OAAO,CAAW;IAE3B,YAAY,QAAgB,EAAE,OAAiB;QAC7C,KAAK,CACH,4CAA4C,QAAQ,kBAAkB;YACpE,0BAA0B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI;YACpD,sEAAsE;YACtE,qEAAqE,CACxE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -43,7 +43,7 @@ export declare function createMigrationConfig(input?: MigrationConfigInput): Mig
|
|
|
43
43
|
export declare function getFlywayEnv(config: MigrationConfig, dbUrl: string): Record<string, string>;
|
|
44
44
|
export { runMigrations, getMigrationStatus, MIGRATIONS_TRACKING_TABLE, } from './dispatcher.js';
|
|
45
45
|
export { runSeeds, getSeedStatus, SEEDS_TRACKING_TABLE, } from './seeds.js';
|
|
46
|
-
export { MigrationToolNotImplementedError, MigrationHashMismatchError, } from './errors.js';
|
|
46
|
+
export { MigrationToolNotImplementedError, MigrationHashMismatchError, MigrationCollisionError, } from './errors.js';
|
|
47
47
|
export { applyDatabaseUrlToEnv } from './env.js';
|
|
48
48
|
export type { RunResult, StatusEntry, RunOptions, SeedRunOptions, } from './types.js';
|
|
49
49
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAI/E;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,eAGtC,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,oBAAoB,GAAG,eAAe,CAOnF;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO3F;AAID,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,QAAQ,EACR,aAAa,EACb,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,gCAAgC,EAChC,0BAA0B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAI/E;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,eAGtC,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,oBAAoB,GAAG,eAAe,CAOnF;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO3F;AAID,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,QAAQ,EACR,aAAa,EACb,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,gCAAgC,EAChC,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD,YAAY,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,cAAc,GACf,MAAM,YAAY,CAAC"}
|
package/dist/migrations/index.js
CHANGED
|
@@ -61,6 +61,6 @@ export function getFlywayEnv(config, dbUrl) {
|
|
|
61
61
|
// ─── Built-in runner (new public API) ────────────────────────────────────
|
|
62
62
|
export { runMigrations, getMigrationStatus, MIGRATIONS_TRACKING_TABLE, } from './dispatcher.js';
|
|
63
63
|
export { runSeeds, getSeedStatus, SEEDS_TRACKING_TABLE, } from './seeds.js';
|
|
64
|
-
export { MigrationToolNotImplementedError, MigrationHashMismatchError, } from './errors.js';
|
|
64
|
+
export { MigrationToolNotImplementedError, MigrationHashMismatchError, MigrationCollisionError, } from './errors.js';
|
|
65
65
|
export { applyDatabaseUrlToEnv } from './env.js';
|
|
66
66
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,2EAA2E;AAE3E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD,IAAI,EAAE,QAAQ;IACd,aAAa,EAAE,eAAe;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAA4B;IAChE,IAAI,CAAC,KAAK;QAAE,OAAO,wBAAwB,CAAC;IAE5C,OAAO;QACL,GAAG,wBAAwB;QAC3B,GAAG,KAAK;KACT,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,MAAuB,EAAE,KAAa;IACjE,OAAO;QACL,UAAU,EAAE,KAAK;QACjB,gBAAgB,EAAE,cAAc,MAAM,CAAC,aAAa,EAAE;QACtD,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QACvD,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,uBAAuB,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;KACnF,CAAC;AACJ,CAAC;AAED,4EAA4E;AAE5E,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,QAAQ,EACR,aAAa,EACb,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,gCAAgC,EAChC,0BAA0B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,2EAA2E;AAE3E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD,IAAI,EAAE,QAAQ;IACd,aAAa,EAAE,eAAe;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAA4B;IAChE,IAAI,CAAC,KAAK;QAAE,OAAO,wBAAwB,CAAC;IAE5C,OAAO;QACL,GAAG,wBAAwB;QAC3B,GAAG,KAAK;KACT,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,MAAuB,EAAE,KAAa;IACjE,OAAO;QACL,UAAU,EAAE,KAAK;QACjB,gBAAgB,EAAE,cAAc,MAAM,CAAC,aAAa,EAAE;QACtD,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QACvD,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,uBAAuB,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;KACnF,CAAC;AACJ,CAAC;AAED,4EAA4E;AAE5E,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,QAAQ,EACR,aAAa,EACb,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,gCAAgC,EAChC,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -39,6 +39,15 @@ import type { RunResult, RunOptions, StatusEntry } from '../types.js';
|
|
|
39
39
|
export interface RunSqlFilesOptions extends RunOptions {
|
|
40
40
|
/** Absolute or cwd-relative path to a directory of `*.sql` files. */
|
|
41
41
|
dir: string;
|
|
42
|
+
/**
|
|
43
|
+
* Optional extra directories whose `*.sql` files are merged into the
|
|
44
|
+
* same tracked set as `dir`. Used by `runMigrations` to pull in
|
|
45
|
+
* venturekit-shipped migrations (e.g. `@venturekit/notify/migrations/`)
|
|
46
|
+
* alongside the project's own. Filenames must be globally unique
|
|
47
|
+
* across `dir` + `extraDirs`; collisions throw `MigrationCollisionError`.
|
|
48
|
+
* Apply order is the lexicographic merge of all basenames.
|
|
49
|
+
*/
|
|
50
|
+
extraDirs?: string[];
|
|
42
51
|
/**
|
|
43
52
|
* Name of the tracking table to use. Must match
|
|
44
53
|
* `/^[A-Za-z_][A-Za-z0-9_]*$/` (this name is interpolated into raw SQL —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../../src/migrations/runners/custom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AASH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtE;;;GAGG;AACH,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAgBD;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,CA8B9E;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,WAAW,EAAE,CAAC,CAcxB"}
|
|
1
|
+
{"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../../src/migrations/runners/custom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AASH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtE;;;GAGG;AACH,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAgBD;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,CA8B9E;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,WAAW,EAAE,CAAC,CAcxB"}
|
|
@@ -36,7 +36,7 @@ import { readdir, readFile } from 'node:fs/promises';
|
|
|
36
36
|
import path from 'node:path';
|
|
37
37
|
import { query } from '../../query/index.js';
|
|
38
38
|
import { beginTransaction } from '../../query/transaction.js';
|
|
39
|
-
import { MigrationHashMismatchError } from '../errors.js';
|
|
39
|
+
import { MigrationCollisionError, MigrationHashMismatchError } from '../errors.js';
|
|
40
40
|
/**
|
|
41
41
|
* Apply pending `.sql` files in `opts.dir`, tracked in `opts.trackingTable`.
|
|
42
42
|
*
|
|
@@ -50,7 +50,7 @@ import { MigrationHashMismatchError } from '../errors.js';
|
|
|
50
50
|
export async function runSqlFiles(opts) {
|
|
51
51
|
validateIdentifier(opts.trackingTable);
|
|
52
52
|
await ensureTrackingTable(opts.trackingTable);
|
|
53
|
-
const files = await
|
|
53
|
+
const files = await listMergedSqlFiles(opts.dir, opts.extraDirs ?? []);
|
|
54
54
|
const applied = await loadAppliedRows(opts.trackingTable);
|
|
55
55
|
const result = { applied: [], skipped: [] };
|
|
56
56
|
for (const f of files) {
|
|
@@ -81,7 +81,7 @@ export async function runSqlFiles(opts) {
|
|
|
81
81
|
export async function getSqlFilesStatus(opts) {
|
|
82
82
|
validateIdentifier(opts.trackingTable);
|
|
83
83
|
await ensureTrackingTable(opts.trackingTable);
|
|
84
|
-
const files = await
|
|
84
|
+
const files = await listMergedSqlFiles(opts.dir, opts.extraDirs ?? []);
|
|
85
85
|
const applied = await loadAppliedRows(opts.trackingTable);
|
|
86
86
|
return files.map((f) => {
|
|
87
87
|
const a = applied.get(f.version);
|
|
@@ -118,6 +118,48 @@ async function listSqlFiles(dir) {
|
|
|
118
118
|
}
|
|
119
119
|
return out;
|
|
120
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Read SQL files from `primaryDir` plus any `extraDirs`, merge into a
|
|
123
|
+
* single lexicographically-sorted list, and reject filename collisions
|
|
124
|
+
* with `MigrationCollisionError` (renaming is a one-line fix; silently
|
|
125
|
+
* overwriting a project file with a package file would make the applied
|
|
126
|
+
* schema depend on which dir was scanned first).
|
|
127
|
+
*
|
|
128
|
+
* Both `primaryDir` and missing `extraDirs` are tolerated when they
|
|
129
|
+
* don't exist on disk — but an entry that fails to `readdir` for any
|
|
130
|
+
* other reason still propagates. This matches the deploy-side
|
|
131
|
+
* `mergeDbDir` semantics and keeps `runSeeds` (single-dir caller) working
|
|
132
|
+
* unchanged.
|
|
133
|
+
*/
|
|
134
|
+
async function listMergedSqlFiles(primaryDir, extraDirs) {
|
|
135
|
+
const primary = await listSqlFiles(primaryDir);
|
|
136
|
+
if (extraDirs.length === 0)
|
|
137
|
+
return primary;
|
|
138
|
+
// Track which source dir contributed each filename so collisions can
|
|
139
|
+
// point the operator at the conflicting paths.
|
|
140
|
+
const seen = new Map();
|
|
141
|
+
for (const f of primary) {
|
|
142
|
+
seen.set(`${f.version}.sql`, primaryDir);
|
|
143
|
+
}
|
|
144
|
+
const merged = [...primary];
|
|
145
|
+
for (const extra of extraDirs) {
|
|
146
|
+
const files = await listSqlFiles(extra);
|
|
147
|
+
for (const f of files) {
|
|
148
|
+
const filename = `${f.version}.sql`;
|
|
149
|
+
const existingSource = seen.get(filename);
|
|
150
|
+
if (existingSource !== undefined) {
|
|
151
|
+
throw new MigrationCollisionError(filename, [existingSource, extra]);
|
|
152
|
+
}
|
|
153
|
+
seen.set(filename, extra);
|
|
154
|
+
merged.push(f);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Apply order is the lexicographic merge of all basenames. Project
|
|
158
|
+
// files (`0001_*`) sort before package extensions (`vk_*`) so package
|
|
159
|
+
// migrations can safely reference project tables by default.
|
|
160
|
+
merged.sort((a, b) => (a.version < b.version ? -1 : a.version > b.version ? 1 : 0));
|
|
161
|
+
return merged;
|
|
162
|
+
}
|
|
121
163
|
async function ensureTrackingTable(table) {
|
|
122
164
|
await query(`CREATE TABLE IF NOT EXISTS ${table} (
|
|
123
165
|
version text PRIMARY KEY,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom.js","sourceRoot":"","sources":["../../../src/migrations/runners/custom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"custom.js","sourceRoot":"","sources":["../../../src/migrations/runners/custom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AA2CnF;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAwB;IACxD,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEvC,MAAM,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAc,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAEvD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7B,MAAM,IAAI,0BAA0B,CAClC,CAAC,CAAC,OAAO,EACT,QAAQ,CAAC,IAAI,EACb,CAAC,CAAC,IAAI,EACN,IAAI,CAAC,aAAa,CACnB,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC/B,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAwB;IAExB,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEvC,MAAM,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAE1D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3B,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;QACvE,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,4EAA4E;AAE5E,KAAK,UAAU,YAAY,CAAC,GAAW;IACrC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,uEAAuE;YACvE,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClE,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzC,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;YACnC,IAAI,EAAE,IAAI;YACV,GAAG;YACH,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC5D,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,kBAAkB,CAC/B,UAAkB,EAClB,SAAmB;IAEnB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAE3C,qEAAqE;IACrE,+CAA+C;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,MAAM,GAAc,CAAC,GAAG,OAAO,CAAC,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QACxC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC;YACpC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC1C,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,IAAI,uBAAuB,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;YACvE,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,sEAAsE;IACtE,6DAA6D;IAC7D,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,KAAa;IAC9C,MAAM,KAAK,CACT,8BAA8B,KAAK;;;;OAIhC,CACJ,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,KAAa;IAEb,wEAAwE;IACxE,wEAAwE;IACxE,0EAA0E;IAC1E,MAAM,IAAI,GAAG,MAAM,KAAK,CACtB,yCAAyC,KAAK,EAAE,EAChD,EAAE,EACF,SAAS,EACT,EAAE,SAAS,EAAE,KAAK,EAAE,CACrB,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,KAAa,EACb,OAAe,EACf,IAAY,EACZ,GAAW;IAEX,sEAAsE;IACtE,8DAA8D;IAC9D,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,wEAAwE;QACxE,uEAAuE;QACvE,0DAA0D;QAC1D,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,EAAE,CAAC,KAAK,CACZ,eAAe,KAAK,kCAAkC,EACtD,CAAC,OAAO,EAAE,IAAI,CAAC,CAChB,CAAC;QACF,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,sCAAsC,IAAI,KAAK;YAC7C,6DAA6D,CAChE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -22,6 +22,29 @@ export interface MigrationConfig {
|
|
|
22
22
|
tool: 'flyway' | 'golang-migrate' | 'prisma' | 'drizzle' | 'custom';
|
|
23
23
|
/** Migrations directory path */
|
|
24
24
|
migrationsDir: string;
|
|
25
|
+
/**
|
|
26
|
+
* Extra directories whose `*.sql` files are merged into the same
|
|
27
|
+
* tracked migration set as `migrationsDir`. Used by `vk migrate` to
|
|
28
|
+
* pull in venturekit-shipped migrations (e.g.
|
|
29
|
+
* `@venturekit/notify/migrations/`, `@venturekit/auth/migrations/`)
|
|
30
|
+
* alongside the project's own.
|
|
31
|
+
*
|
|
32
|
+
* Semantics (handled by the `'custom'` runner):
|
|
33
|
+
* - All files from all dirs feed the same tracking table
|
|
34
|
+
* (`__vk_migrations`) so a given file is applied at most once.
|
|
35
|
+
* - Filenames must be globally unique across `migrationsDir` +
|
|
36
|
+
* extras; collisions throw at run time. VentureKit packages
|
|
37
|
+
* prefix their files with `vk_<package>_<NNN>_*.sql` and
|
|
38
|
+
* projects should avoid that prefix.
|
|
39
|
+
* - Apply order is the lexicographic merge of all filenames, so
|
|
40
|
+
* project files (`0001_*`) run before package extensions
|
|
41
|
+
* (`vk_*`) by default — which is what we want when package
|
|
42
|
+
* migrations reference project tables.
|
|
43
|
+
*
|
|
44
|
+
* Currently honored by `tool: 'custom'`. Other tools throw
|
|
45
|
+
* `MigrationToolNotImplementedError` regardless.
|
|
46
|
+
*/
|
|
47
|
+
extraMigrationsDirs?: string[];
|
|
25
48
|
/** Schema to use */
|
|
26
49
|
schema?: string;
|
|
27
50
|
/** Baseline version (for existing databases) */
|
|
@@ -33,6 +56,7 @@ export interface MigrationConfig {
|
|
|
33
56
|
export interface MigrationConfigInput {
|
|
34
57
|
tool?: 'flyway' | 'golang-migrate' | 'prisma' | 'drizzle' | 'custom';
|
|
35
58
|
migrationsDir?: string;
|
|
59
|
+
extraMigrationsDirs?: string[];
|
|
36
60
|
schema?: string;
|
|
37
61
|
baselineVersion?: string;
|
|
38
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../src/types/migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,IAAI,EAAE,QAAQ,GAAG,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IAEpE,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IAEtB,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,QAAQ,GAAG,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B"}
|
|
1
|
+
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../src/types/migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,IAAI,EAAE,QAAQ,GAAG,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IAEpE,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IAEtB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE/B,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,QAAQ,GAAG,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@venturekit/data",
|
|
3
|
-
"version": "0.0.0-dev.
|
|
3
|
+
"version": "0.0.0-dev.20260511022417",
|
|
4
4
|
"description": "Database and data layer for VentureKit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@aws-sdk/client-secrets-manager": "^3.500.0",
|
|
29
|
-
"@venturekit/core": "0.0.0-dev.
|
|
29
|
+
"@venturekit/core": "0.0.0-dev.20260511022417",
|
|
30
30
|
"pg": "^8.12.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|