@ftschopp/dynatable-migrations 1.3.2 → 2.0.0
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/CHANGELOG.md +43 -0
- package/README.md +2 -2
- package/USAGE.md +2 -2
- package/dist/cli.js +48 -80
- package/dist/cli.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +1 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +3 -2
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +12 -7
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +3 -2
- package/dist/commands/up.js.map +1 -1
- package/dist/core/config.d.ts +4 -23
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +72 -102
- package/dist/core/config.js.map +1 -1
- package/dist/core/loader.d.ts +16 -62
- package/dist/core/loader.d.ts.map +1 -1
- package/dist/core/loader.js +165 -216
- package/dist/core/loader.js.map +1 -1
- package/dist/core/runner.d.ts +2 -28
- package/dist/core/runner.d.ts.map +1 -1
- package/dist/core/runner.js +181 -218
- package/dist/core/runner.js.map +1 -1
- package/dist/core/tracker.d.ts +10 -77
- package/dist/core/tracker.d.ts.map +1 -1
- package/dist/core/tracker.js +219 -285
- package/dist/core/tracker.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,46 @@
|
|
|
1
|
+
# @ftschopp/dynatable-migrations [2.0.0](https://github.com/ftschopp/dynatable/compare/@ftschopp/dynatable-migrations@1.3.2...@ftschopp/dynatable-migrations@2.0.0) (2026-05-11)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Code Refactoring
|
|
5
|
+
|
|
6
|
+
* adopt functional style across core, migrations, and docs ([#53](https://github.com/ftschopp/dynatable/issues/53)) ([de6a6c4](https://github.com/ftschopp/dynatable/commit/de6a6c46aad452be51d08d7ac5886b6c4406ddea))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### BREAKING CHANGES
|
|
10
|
+
|
|
11
|
+
* (migrations): convert class-based public APIs to factory
|
|
12
|
+
functions to remove gratuitous OO ceremony — no behavior changes.
|
|
13
|
+
|
|
14
|
+
- MigrationRunner / DynamoDBMigrationTracker / MigrationLoader / ConfigLoader
|
|
15
|
+
→ createMigrationRunner / createMigrationTracker / createMigrationLoader
|
|
16
|
+
→ loadConfig / createDefaultConfig (free functions)
|
|
17
|
+
- Centralize CLI try/catch in a single runCommand helper; replace `error: any`
|
|
18
|
+
with `unknown` + narrowing throughout migrations.
|
|
19
|
+
- Group migration statuses with a single reduce instead of four .filter passes.
|
|
20
|
+
|
|
21
|
+
Core (no behavior changes):
|
|
22
|
+
- buildProjectionExpression, operators.in, resolveKeys: replace forEach/for-of
|
|
23
|
+
+ mutation with Object.fromEntries / map composition.
|
|
24
|
+
- scan.dbParams / query.dbParams / update.dbParams: replace `let params: any` +
|
|
25
|
+
imperative assignments with a single object literal using conditional spread;
|
|
26
|
+
replace `Object.assign(allNames, …)` loops with a buildSection helper that
|
|
27
|
+
reduces actions into { part, names, values }.
|
|
28
|
+
|
|
29
|
+
Docs: replace `let query = …; if (cond) query = query.set(…)` with
|
|
30
|
+
`.set(filteredFields)` or conditional `startFrom`; switch a mutating `.sort()`
|
|
31
|
+
on a feed array to `.toSorted()`.
|
|
32
|
+
|
|
33
|
+
* chore: switch to createRequire in migrations CLI/loader and pin Node 22
|
|
34
|
+
|
|
35
|
+
- Replace top-level `require()` calls with `createRequire(__filename)` in
|
|
36
|
+
cli.ts and loader.ts so the package compiles cleanly without falling back
|
|
37
|
+
on bundler-specific shims; switch `require('ts-node')` to `await import`
|
|
38
|
+
for ESM compatibility (registerTsNode is now async).
|
|
39
|
+
- Simplify update examples in blog-system.md: pass the partial `updates`
|
|
40
|
+
object directly to `.set(...)` — Dynatable already ignores undefined
|
|
41
|
+
fields, so the manual filter was redundant.
|
|
42
|
+
- Add .nvmrc pinning to Node 22 (matches engines field in package.json).
|
|
43
|
+
|
|
1
44
|
## @ftschopp/dynatable-migrations [1.3.2](https://github.com/ftschopp/dynatable/compare/@ftschopp/dynatable-migrations@1.3.1...@ftschopp/dynatable-migrations@1.3.2) (2026-05-10)
|
|
2
45
|
|
|
3
46
|
|
package/README.md
CHANGED
|
@@ -338,12 +338,12 @@ interface MigrationConfig {
|
|
|
338
338
|
You can also use the migration runner programmatically:
|
|
339
339
|
|
|
340
340
|
```typescript
|
|
341
|
-
import {
|
|
341
|
+
import { createMigrationRunner, loadConfig, createDynamoDBClient } from '@ftschopp/dynatable-migrations';
|
|
342
342
|
|
|
343
343
|
const config = await loadConfig();
|
|
344
344
|
const client = createDynamoDBClient(config);
|
|
345
345
|
|
|
346
|
-
const runner =
|
|
346
|
+
const runner = createMigrationRunner(client, config);
|
|
347
347
|
|
|
348
348
|
// Run migrations
|
|
349
349
|
await runner.up();
|
package/USAGE.md
CHANGED
|
@@ -666,12 +666,12 @@ If you see "Could not acquire migration lock":
|
|
|
666
666
|
You can also use the migration runner in your code:
|
|
667
667
|
|
|
668
668
|
```typescript
|
|
669
|
-
import {
|
|
669
|
+
import { createMigrationRunner, loadConfig, createDynamoDBClient } from '@ftschopp/dynatable-migrations';
|
|
670
670
|
|
|
671
671
|
async function runMigrations() {
|
|
672
672
|
const config = await loadConfig();
|
|
673
673
|
const client = createDynamoDBClient(config);
|
|
674
|
-
const runner =
|
|
674
|
+
const runner = createMigrationRunner(client, config);
|
|
675
675
|
|
|
676
676
|
// Get status
|
|
677
677
|
const status = await runner.status();
|
package/dist/cli.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
const commander_1 = require("commander");
|
|
5
|
+
const module_1 = require("module");
|
|
5
6
|
const config_1 = require("./core/config");
|
|
6
7
|
const create_1 = require("./commands/create");
|
|
7
8
|
const up_1 = require("./commands/up");
|
|
@@ -10,8 +11,19 @@ const status_1 = require("./commands/status");
|
|
|
10
11
|
const init_1 = require("./commands/init");
|
|
11
12
|
const unlock_1 = require("./commands/unlock");
|
|
12
13
|
const cli_utils_1 = require("./cli-utils");
|
|
13
|
-
// Read version from package.json
|
|
14
|
-
|
|
14
|
+
// Read version from package.json — `createRequire` keeps it out of rootDir
|
|
15
|
+
// (so we don't need `resolveJsonModule` to reach outside src/).
|
|
16
|
+
const packageJson = (0, module_1.createRequire)(__filename)('../package.json');
|
|
17
|
+
const runCommand = async (fn) => {
|
|
18
|
+
try {
|
|
19
|
+
await fn();
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
23
|
+
console.error(`Error: ${message}`);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
15
27
|
const program = new commander_1.Command();
|
|
16
28
|
program
|
|
17
29
|
.name('dynatable-migrate')
|
|
@@ -21,15 +33,7 @@ program
|
|
|
21
33
|
program
|
|
22
34
|
.command('init')
|
|
23
35
|
.description('Initialize migrations in current project')
|
|
24
|
-
.action(
|
|
25
|
-
try {
|
|
26
|
-
await (0, init_1.initProject)();
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
console.error(`Error: ${error.message}`);
|
|
30
|
-
process.exit(1);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
36
|
+
.action(() => runCommand(() => (0, init_1.initProject)()));
|
|
33
37
|
// Create command
|
|
34
38
|
program
|
|
35
39
|
.command('create <name>')
|
|
@@ -40,36 +44,24 @@ program
|
|
|
40
44
|
.option('--minor', 'Shortcut for --type minor')
|
|
41
45
|
.option('--patch', 'Shortcut for --type patch')
|
|
42
46
|
.option('-e, --explicit <version>', 'Explicit version (e.g., 2.0.0)')
|
|
43
|
-
.action(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
throw new Error(`Conflicting bump options: ${sources.join(', ')}. Pass only one of --type, --major, --minor, --patch.`);
|
|
55
|
-
}
|
|
56
|
-
const bumpType = sources[0];
|
|
57
|
-
let migrationsDir = './migrations';
|
|
58
|
-
// Try to load config to get migrations directory
|
|
59
|
-
try {
|
|
60
|
-
const config = await (0, config_1.loadConfig)(options.config);
|
|
61
|
-
migrationsDir = config.migrationsDir || './migrations';
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
// If config doesn't exist, use default
|
|
65
|
-
}
|
|
66
|
-
await (0, create_1.createMigration)(name, migrationsDir, bumpType, options.explicit);
|
|
67
|
-
}
|
|
68
|
-
catch (error) {
|
|
69
|
-
console.error(`Error: ${error.message}`);
|
|
70
|
-
process.exit(1);
|
|
47
|
+
.action((name, options) => runCommand(async () => {
|
|
48
|
+
// Resolve a single bump type from --type and the boolean shortcuts.
|
|
49
|
+
// Reject if more than one shortcut/type was passed so the user notices
|
|
50
|
+
// their own contradiction instead of getting whichever one wins.
|
|
51
|
+
const shortcutFlags = ['major', 'minor', 'patch'].filter((f) => options[f]);
|
|
52
|
+
const sources = [
|
|
53
|
+
...(options.type ? [options.type] : []),
|
|
54
|
+
...shortcutFlags,
|
|
55
|
+
];
|
|
56
|
+
if (sources.length > 1) {
|
|
57
|
+
throw new Error(`Conflicting bump options: ${sources.join(', ')}. Pass only one of --type, --major, --minor, --patch.`);
|
|
71
58
|
}
|
|
72
|
-
|
|
59
|
+
const bumpType = sources[0];
|
|
60
|
+
const migrationsDir = await (0, config_1.loadConfig)(options.config)
|
|
61
|
+
.then((config) => config.migrationsDir || './migrations')
|
|
62
|
+
.catch(() => './migrations');
|
|
63
|
+
await (0, create_1.createMigration)(name, migrationsDir, bumpType, options.explicit);
|
|
64
|
+
}));
|
|
73
65
|
// Up command
|
|
74
66
|
program
|
|
75
67
|
.command('up')
|
|
@@ -77,16 +69,10 @@ program
|
|
|
77
69
|
.option('-c, --config <path>', 'Path to config file')
|
|
78
70
|
.option('-l, --limit <number>', 'Limit number of migrations to run', (0, cli_utils_1.parsePositiveInt)('limit'))
|
|
79
71
|
.option('-d, --dry-run', 'Show what would be done without making changes')
|
|
80
|
-
.action(async (
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
console.error(`Error: ${error.message}`);
|
|
87
|
-
process.exit(1);
|
|
88
|
-
}
|
|
89
|
-
});
|
|
72
|
+
.action((options) => runCommand(async () => {
|
|
73
|
+
const config = await (0, config_1.loadConfig)(options.config);
|
|
74
|
+
await (0, up_1.runMigrations)(config, options.limit, options.dryRun);
|
|
75
|
+
}));
|
|
90
76
|
// Down command
|
|
91
77
|
program
|
|
92
78
|
.command('down')
|
|
@@ -95,31 +81,19 @@ program
|
|
|
95
81
|
.option('-s, --steps <number>', 'Number of migrations to rollback', (0, cli_utils_1.parsePositiveInt)('steps'), 1)
|
|
96
82
|
.option('-d, --dry-run', 'Show what would be done without making changes')
|
|
97
83
|
.option('-y, --yes', 'Skip the interactive confirmation prompt')
|
|
98
|
-
.action(async (
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
catch (error) {
|
|
104
|
-
console.error(`Error: ${error.message}`);
|
|
105
|
-
process.exit(1);
|
|
106
|
-
}
|
|
107
|
-
});
|
|
84
|
+
.action((options) => runCommand(async () => {
|
|
85
|
+
const config = await (0, config_1.loadConfig)(options.config);
|
|
86
|
+
await (0, down_1.rollbackMigrations)(config, options.steps, options.dryRun, options.yes);
|
|
87
|
+
}));
|
|
108
88
|
// Status command
|
|
109
89
|
program
|
|
110
90
|
.command('status')
|
|
111
91
|
.description('Show migration status')
|
|
112
92
|
.option('-c, --config <path>', 'Path to config file')
|
|
113
|
-
.action(async (
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
catch (error) {
|
|
119
|
-
console.error(`Error: ${error.message}`);
|
|
120
|
-
process.exit(1);
|
|
121
|
-
}
|
|
122
|
-
});
|
|
93
|
+
.action((options) => runCommand(async () => {
|
|
94
|
+
const config = await (0, config_1.loadConfig)(options.config);
|
|
95
|
+
await (0, status_1.showStatus)(config);
|
|
96
|
+
}));
|
|
123
97
|
// Unlock command — for emergency recovery when a migration process died
|
|
124
98
|
// hard without releasing its lock. The 5-minute TTL eventually clears
|
|
125
99
|
// the lock anyway, but waiting that long during an incident is rough.
|
|
@@ -128,15 +102,9 @@ program
|
|
|
128
102
|
.description('Forcefully release the migration lock (emergency recovery)')
|
|
129
103
|
.option('-c, --config <path>', 'Path to config file')
|
|
130
104
|
.option('-y, --yes', 'Skip the interactive confirmation prompt')
|
|
131
|
-
.action(async (
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
}
|
|
136
|
-
catch (error) {
|
|
137
|
-
console.error(`Error: ${error.message}`);
|
|
138
|
-
process.exit(1);
|
|
139
|
-
}
|
|
140
|
-
});
|
|
105
|
+
.action((options) => runCommand(async () => {
|
|
106
|
+
const config = await (0, config_1.loadConfig)(options.config);
|
|
107
|
+
await (0, unlock_1.forceUnlock)(config, options.yes);
|
|
108
|
+
}));
|
|
141
109
|
program.parse(process.argv);
|
|
142
110
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA2C;AAC3C,8CAAoD;AACpD,sCAA8C;AAC9C,0CAAqD;AACrD,8CAA+C;AAC/C,0CAA8C;AAC9C,8CAAgD;AAChD,2CAA+C;AAE/C,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,mCAAuC;AACvC,0CAA2C;AAC3C,8CAAoD;AACpD,sCAA8C;AAC9C,0CAAqD;AACrD,8CAA+C;AAC/C,0CAA8C;AAC9C,8CAAgD;AAChD,2CAA+C;AAE/C,2EAA2E;AAC3E,gEAAgE;AAChE,MAAM,WAAW,GAAG,IAAA,sBAAa,EAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAEjE,MAAM,UAAU,GAAG,KAAK,EAAE,EAAuB,EAAiB,EAAE;IAClE,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,mBAAmB,CAAC;KACzB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAA,kBAAW,GAAE,CAAC,CAAC,CAAC;AAEjD,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KACpD,MAAM,CAAC,mBAAmB,EAAE,4DAA4D,CAAC;KACzF,MAAM,CAAC,SAAS,EAAE,2BAA2B,CAAC;KAC9C,MAAM,CAAC,SAAS,EAAE,2BAA2B,CAAC;KAC9C,MAAM,CAAC,SAAS,EAAE,2BAA2B,CAAC;KAC9C,MAAM,CAAC,0BAA0B,EAAE,gCAAgC,CAAC;KACpE,MAAM,CAAC,CAAC,IAAY,EAAE,OAAO,EAAE,EAAE,CAChC,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,oEAAoE;IACpE,uEAAuE;IACvE,iEAAiE;IACjE,MAAM,aAAa,GAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,MAAM,OAAO,GAAG;QACd,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,aAAa;KACjB,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,6BAA6B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,uDAAuD,CACvG,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAE5B,MAAM,aAAa,GAAG,MAAM,IAAA,mBAAU,EAAC,OAAO,CAAC,MAAM,CAAC;SACnD,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,IAAI,cAAc,CAAC;SACxD,KAAK,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;IAE/B,MAAM,IAAA,wBAAe,EAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AACzE,CAAC,CAAC,CACH,CAAC;AAEJ,aAAa;AACb,OAAO;KACJ,OAAO,CAAC,IAAI,CAAC;KACb,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KACpD,MAAM,CAAC,sBAAsB,EAAE,mCAAmC,EAAE,IAAA,4BAAgB,EAAC,OAAO,CAAC,CAAC;KAC9F,MAAM,CAAC,eAAe,EAAE,gDAAgD,CAAC;KACzE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAClB,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAU,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,IAAA,kBAAa,EAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC,CAAC,CACH,CAAC;AAEJ,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qBAAqB,CAAC;KAClC,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KACpD,MAAM,CAAC,sBAAsB,EAAE,kCAAkC,EAAE,IAAA,4BAAgB,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KAChG,MAAM,CAAC,eAAe,EAAE,gDAAgD,CAAC;KACzE,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;KAC/D,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAClB,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAU,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,IAAA,yBAAkB,EAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AAC/E,CAAC,CAAC,CACH,CAAC;AAEJ,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KACpD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAClB,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAU,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;AAC3B,CAAC,CAAC,CACH,CAAC;AAEJ,wEAAwE;AACxE,sEAAsE;AACtE,sEAAsE;AACtE,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,4DAA4D,CAAC;KACzE,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KACpD,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;KAC/D,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAClB,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAU,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,IAAA,oBAAW,EAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC,CAAC,CACH,CAAC;AAEJ,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAiDA,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,aAAa,GAAE,MAAuB,EACtC,QAAQ,CAAC,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC,CA2Df"}
|
package/dist/commands/create.js
CHANGED
|
@@ -79,7 +79,7 @@ async function createMigration(name, migrationsDir = './migrations', bumpType, e
|
|
|
79
79
|
console.log(`📁 Created migrations directory: ${migrationsDir}`);
|
|
80
80
|
}
|
|
81
81
|
// Generate version
|
|
82
|
-
const loader =
|
|
82
|
+
const loader = (0, loader_1.createMigrationLoader)(migrationsDir);
|
|
83
83
|
let version;
|
|
84
84
|
if (explicitVersion) {
|
|
85
85
|
// Validate explicit version is semver
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAoB3C,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,eAAe,EACvB,KAAK,GAAE,MAAU,EACjB,MAAM,GAAE,OAAe,EACvB,GAAG,GAAE,OAAe,GACnB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAoB3C,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,eAAe,EACvB,KAAK,GAAE,MAAU,EACjB,MAAM,GAAE,OAAe,EACvB,GAAG,GAAE,OAAe,GACnB,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
|
package/dist/commands/down.js
CHANGED
|
@@ -57,7 +57,7 @@ async function confirm(prompt) {
|
|
|
57
57
|
}
|
|
58
58
|
async function rollbackMigrations(config, steps = 1, dryRun = false, yes = false) {
|
|
59
59
|
const client = (0, client_1.createDynamoDBClient)(config);
|
|
60
|
-
const runner =
|
|
60
|
+
const runner = (0, runner_1.createMigrationRunner)(client, config);
|
|
61
61
|
try {
|
|
62
62
|
if (!dryRun && !yes) {
|
|
63
63
|
const ok = await confirm(`\n⚠️ About to roll back ${steps} migration(s) on table "${config.tableName}". ` +
|
|
@@ -75,7 +75,8 @@ async function rollbackMigrations(config, steps = 1, dryRun = false, yes = false
|
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
catch (error) {
|
|
78
|
-
|
|
78
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
79
|
+
console.error(`\n❌ Rollback failed: ${message}\n`);
|
|
79
80
|
process.exit(1);
|
|
80
81
|
}
|
|
81
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"down.js","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,
|
|
1
|
+
{"version":3,"file":"down.js","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,gDAkCC;AAzDD,mDAAqC;AACrC,2CAAuD;AACvD,2CAAsD;AAGtD;;;;;GAKG;AACH,KAAK,UAAU,OAAO,CAAC,MAAc;IACnC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;YACnD,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,kBAAkB,CACtC,MAAuB,EACvB,QAAgB,CAAC,EACjB,SAAkB,KAAK,EACvB,MAAe,KAAK;IAEpB,MAAM,MAAM,GAAG,IAAA,6BAAoB,EAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAA,8BAAqB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErD,IAAI,CAAC;QACH,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;YACpB,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,4BAA4B,KAAK,2BAA2B,MAAM,CAAC,SAAS,KAAK;gBAC/E,iEAAiE,CACpE,CAAC;YACF,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEpD,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,iCAAiC,UAAU,CAAC,MAAM,eAAe,CAAC,CAAC;YAE/E,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,uBAAuB,cAAc,IAAI,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,wBAAwB,OAAO,IAAI,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -54,7 +54,7 @@ async function initProject() {
|
|
|
54
54
|
// Create config file
|
|
55
55
|
const configPath = path.join(cwd, 'dynatable.config.js');
|
|
56
56
|
if (!fs.existsSync(configPath)) {
|
|
57
|
-
config_1.
|
|
57
|
+
(0, config_1.createDefaultConfig)(configPath);
|
|
58
58
|
}
|
|
59
59
|
else {
|
|
60
60
|
console.log(`⚠️ Config already exists: ${configPath}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,kCAgCC;AApCD,uCAAyB;AACzB,2CAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,kCAgCC;AApCD,uCAAyB;AACzB,2CAA6B;AAC7B,2CAAqD;AAE9C,KAAK,UAAU,WAAW;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IAEvD,8BAA8B;IAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,cAAc,aAAa,GAAG,CAAC,CAAC;QAE5C,kBAAkB;QAClB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,iCAAiC,aAAa,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,qBAAqB;IACrB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,IAAA,4BAAmB,EAAC,UAAU,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAsB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAsB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA0EvE"}
|
package/dist/commands/status.js
CHANGED
|
@@ -5,7 +5,7 @@ const runner_1 = require("../core/runner");
|
|
|
5
5
|
const client_1 = require("../core/client");
|
|
6
6
|
async function showStatus(config) {
|
|
7
7
|
const client = (0, client_1.createDynamoDBClient)(config);
|
|
8
|
-
const runner =
|
|
8
|
+
const runner = (0, runner_1.createMigrationRunner)(client, config);
|
|
9
9
|
try {
|
|
10
10
|
const statuses = await runner.status();
|
|
11
11
|
const currentVersion = await runner.getCurrentVersion();
|
|
@@ -17,11 +17,15 @@ async function showStatus(config) {
|
|
|
17
17
|
console.log('No migrations found.\n');
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
const grouped = statuses.reduce((acc, s) => {
|
|
21
|
+
var _a;
|
|
22
|
+
(acc[_a = s.status] ?? (acc[_a] = [])).push(s);
|
|
23
|
+
return acc;
|
|
24
|
+
}, {});
|
|
25
|
+
const pending = grouped.pending ?? [];
|
|
26
|
+
const applied = grouped.applied ?? [];
|
|
27
|
+
const failed = grouped.failed ?? [];
|
|
28
|
+
const rolledBack = grouped.rolled_back ?? [];
|
|
25
29
|
// Show applied migrations
|
|
26
30
|
if (applied.length > 0) {
|
|
27
31
|
console.log(`✅ Applied (${applied.length}):`);
|
|
@@ -62,7 +66,8 @@ async function showStatus(config) {
|
|
|
62
66
|
console.log(`Total: ${statuses.length} migration(s)\n`);
|
|
63
67
|
}
|
|
64
68
|
catch (error) {
|
|
65
|
-
|
|
69
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
70
|
+
console.error(`\n❌ Failed to get status: ${message}\n`);
|
|
66
71
|
process.exit(1);
|
|
67
72
|
}
|
|
68
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":";;AAIA,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"up.d.ts","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAsB,aAAa,CACjC,MAAM,EAAE,eAAe,EACvB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"up.d.ts","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAsB,aAAa,CACjC,MAAM,EAAE,eAAe,EACvB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAkBf"}
|
package/dist/commands/up.js
CHANGED
|
@@ -5,7 +5,7 @@ const runner_1 = require("../core/runner");
|
|
|
5
5
|
const client_1 = require("../core/client");
|
|
6
6
|
async function runMigrations(config, limit, dryRun = false) {
|
|
7
7
|
const client = (0, client_1.createDynamoDBClient)(config);
|
|
8
|
-
const runner =
|
|
8
|
+
const runner = (0, runner_1.createMigrationRunner)(client, config);
|
|
9
9
|
try {
|
|
10
10
|
const executed = await runner.up({ limit, dryRun });
|
|
11
11
|
if (!dryRun && executed.length > 0) {
|
|
@@ -15,7 +15,8 @@ async function runMigrations(config, limit, dryRun = false) {
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
catch (error) {
|
|
18
|
-
|
|
18
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
19
|
+
console.error(`\n❌ Migration failed: ${message}\n`);
|
|
19
20
|
process.exit(1);
|
|
20
21
|
}
|
|
21
22
|
}
|
package/dist/commands/up.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":";;AAIA,
|
|
1
|
+
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":";;AAIA,sCAsBC;AA1BD,2CAAuD;AACvD,2CAAsD;AAG/C,KAAK,UAAU,aAAa,CACjC,MAAuB,EACvB,KAAc,EACd,SAAkB,KAAK;IAEvB,MAAM,MAAM,GAAG,IAAA,6BAAoB,EAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAA,8BAAqB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAEpD,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,6BAA6B,QAAQ,CAAC,MAAM,eAAe,CAAC,CAAC;YAEzE,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,uBAAuB,cAAc,IAAI,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,yBAAyB,OAAO,IAAI,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/core/config.d.ts
CHANGED
|
@@ -1,29 +1,10 @@
|
|
|
1
1
|
import { MigrationConfig } from '../types';
|
|
2
|
-
/**
|
|
3
|
-
* Load migration configuration
|
|
4
|
-
*/
|
|
5
|
-
export declare class ConfigLoader {
|
|
6
|
-
private configPath;
|
|
7
|
-
constructor(configPath?: string);
|
|
8
|
-
/**
|
|
9
|
-
* Find config file in current directory or parent directories
|
|
10
|
-
*/
|
|
11
|
-
private findConfigFile;
|
|
12
|
-
/**
|
|
13
|
-
* Load configuration from file
|
|
14
|
-
*/
|
|
15
|
-
load(): Promise<MigrationConfig>;
|
|
16
|
-
/**
|
|
17
|
-
* Validate and normalize configuration
|
|
18
|
-
*/
|
|
19
|
-
private validateAndNormalizeConfig;
|
|
20
|
-
/**
|
|
21
|
-
* Create default config file
|
|
22
|
-
*/
|
|
23
|
-
static createDefaultConfig(targetPath: string): void;
|
|
24
|
-
}
|
|
25
2
|
/**
|
|
26
3
|
* Get config from environment or file
|
|
27
4
|
*/
|
|
28
5
|
export declare function loadConfig(configPath?: string): Promise<MigrationConfig>;
|
|
6
|
+
/**
|
|
7
|
+
* Create default config file in the given path.
|
|
8
|
+
*/
|
|
9
|
+
export declare const createDefaultConfig: (targetPath: string) => void;
|
|
29
10
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AA8D3C;;GAEG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAmB9E;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,YAAY,MAAM,KAAG,IAgCxD,CAAC"}
|