supabee 0.3.2 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +420 -328
- package/dist/commands/cutoff.d.ts +5 -0
- package/dist/commands/cutoff.js +49 -0
- package/dist/commands/cutoff.js.map +1 -0
- package/dist/commands/db-reset.d.ts +2 -0
- package/dist/commands/db-reset.js +119 -182
- package/dist/commands/db-reset.js.map +1 -1
- package/dist/commands/init.js +9 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migration.d.ts +18 -0
- package/dist/commands/migration.js +290 -0
- package/dist/commands/migration.js.map +1 -0
- package/dist/commands/sync.d.ts +1 -0
- package/dist/commands/sync.js +50 -2
- package/dist/commands/sync.js.map +1 -1
- package/dist/index.js +129 -88
- package/dist/index.js.map +1 -1
- package/dist/lib/constants.d.ts +3 -0
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/migration-classifier.d.ts +39 -0
- package/dist/lib/migration-classifier.js +321 -0
- package/dist/lib/migration-classifier.js.map +1 -0
- package/dist/lib/post-seed-cutoff.d.ts +24 -0
- package/dist/lib/post-seed-cutoff.js +195 -0
- package/dist/lib/post-seed-cutoff.js.map +1 -0
- package/dist/lib/subprocess.js +7 -7
- package/package.json +54 -53
- package/supabee.config.example.json +34 -29
package/dist/index.js
CHANGED
|
@@ -6,6 +6,8 @@ import { runDataCommand } from './commands/data.js';
|
|
|
6
6
|
import { runInitCommand } from './commands/init.js';
|
|
7
7
|
import { runSyncCommand } from './commands/sync.js';
|
|
8
8
|
import { runDbResetCommand, runStartCommand } from './commands/db-reset.js';
|
|
9
|
+
import { runCutoffDetectCommand } from './commands/cutoff.js';
|
|
10
|
+
import { runMigrationAuditCommand, runMigrationMarkCommand, runMigrationUnmarkCommand } from './commands/migration.js';
|
|
9
11
|
import { runCommand } from './lib/subprocess.js';
|
|
10
12
|
import { error as errText, info, warn } from './lib/ui.js';
|
|
11
13
|
function buildStepArgs(step, reconstructed, options = {}) {
|
|
@@ -26,21 +28,9 @@ function buildStepArgs(step, reconstructed, options = {}) {
|
|
|
26
28
|
args.push(reconstructed);
|
|
27
29
|
return args;
|
|
28
30
|
}
|
|
29
|
-
|
|
30
|
-
try {
|
|
31
|
-
const packageJsonPath = new URL('../package.json', import.meta.url);
|
|
32
|
-
const parsed = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
33
|
-
if (typeof parsed.version === 'string' && parsed.version.trim() !== '') {
|
|
34
|
-
return parsed.version;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
// fallback below
|
|
39
|
-
}
|
|
40
|
-
return '0.0.0';
|
|
41
|
-
}
|
|
42
|
-
const KNOWN_TOP_LEVEL_COMMANDS = new Set(['init', 'schema', 'data', 'sync', 'db', 'start', 'help']);
|
|
31
|
+
const KNOWN_TOP_LEVEL_COMMANDS = new Set(['init', 'schema', 'data', 'sync', 'db', 'start', 'cutoff', 'migration', 'help']);
|
|
43
32
|
const KNOWN_DB_SUBCOMMANDS = new Set(['reset', 'help']);
|
|
33
|
+
const KNOWN_MIGRATION_SUBCOMMANDS = new Set(['audit', 'mark', 'unmark', 'help']);
|
|
44
34
|
function firstNonOptionToken(args) {
|
|
45
35
|
for (let index = 0; index < args.length; index += 1) {
|
|
46
36
|
const token = args[index];
|
|
@@ -89,20 +79,44 @@ function maybePrintGlobalInstallHint(args) {
|
|
|
89
79
|
console.log(info('One-off runners: npx supabee ... | pnpm dlx supabee ... | bunx supabee ...'));
|
|
90
80
|
console.log('');
|
|
91
81
|
}
|
|
82
|
+
function readCliVersion() {
|
|
83
|
+
try {
|
|
84
|
+
const packageJsonPath = new URL('../package.json', import.meta.url);
|
|
85
|
+
const raw = fs.readFileSync(packageJsonPath, 'utf8');
|
|
86
|
+
const parsed = JSON.parse(raw);
|
|
87
|
+
if (typeof parsed.version === 'string' && parsed.version.trim() !== '') {
|
|
88
|
+
return parsed.version;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// fall through
|
|
93
|
+
}
|
|
94
|
+
return '0.0.0';
|
|
95
|
+
}
|
|
92
96
|
async function maybePassthroughToSupabase(args) {
|
|
93
97
|
const topLevel = firstNonOptionToken(args);
|
|
94
98
|
if (!topLevel)
|
|
95
99
|
return false;
|
|
96
100
|
if (KNOWN_TOP_LEVEL_COMMANDS.has(topLevel.token)) {
|
|
97
|
-
if (topLevel.token
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
if (topLevel.token === 'db') {
|
|
102
|
+
const dbSubcommand = firstNonOptionToken(args.slice(topLevel.index + 1));
|
|
103
|
+
if (!dbSubcommand || KNOWN_DB_SUBCOMMANDS.has(dbSubcommand.token)) {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
console.log(info(`Forwarding to Supabase CLI: supabase ${args.join(' ')}`));
|
|
107
|
+
await runCommand('supabase', args);
|
|
108
|
+
return true;
|
|
102
109
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
110
|
+
if (topLevel.token === 'migration') {
|
|
111
|
+
const migrationSubcommand = firstNonOptionToken(args.slice(topLevel.index + 1));
|
|
112
|
+
if (!migrationSubcommand || KNOWN_MIGRATION_SUBCOMMANDS.has(migrationSubcommand.token)) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
console.log(info(`Forwarding to Supabase CLI: supabase ${args.join(' ')}`));
|
|
116
|
+
await runCommand('supabase', args);
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
return false;
|
|
106
120
|
}
|
|
107
121
|
console.log(info(`Forwarding to Supabase CLI: supabase ${args.join(' ')}`));
|
|
108
122
|
await runCommand('supabase', args);
|
|
@@ -114,26 +128,26 @@ program
|
|
|
114
128
|
.version(readCliVersion(), '-V, --version', 'display version number')
|
|
115
129
|
.description('Supabase sync and migration orchestration CLI.')
|
|
116
130
|
.showHelpAfterError('(run with --help for usage)')
|
|
117
|
-
.addHelpText('after', `
|
|
118
|
-
Main Workflows
|
|
119
|
-
supabee sync schema
|
|
120
|
-
supabee sync data
|
|
121
|
-
supabee db reset [cutoff_timestamp]
|
|
122
|
-
supabee start [cutoff_timestamp]
|
|
123
|
-
|
|
124
|
-
Setup (once per project)
|
|
125
|
-
supabee init
|
|
126
|
-
supabase link
|
|
127
|
-
|
|
128
|
-
Examples
|
|
129
|
-
supabee sync schema
|
|
130
|
-
supabee sync data
|
|
131
|
-
supabee db reset 20260309180959
|
|
132
|
-
supabee start 20260309180959
|
|
133
|
-
|
|
134
|
-
Manual Processing (existing dump files)
|
|
135
|
-
supabee schema
|
|
136
|
-
supabee data
|
|
131
|
+
.addHelpText('after', `
|
|
132
|
+
Main Workflows
|
|
133
|
+
supabee sync schema
|
|
134
|
+
supabee sync data
|
|
135
|
+
supabee db reset [cutoff_timestamp]
|
|
136
|
+
supabee start [cutoff_timestamp]
|
|
137
|
+
|
|
138
|
+
Setup (once per project)
|
|
139
|
+
supabee init
|
|
140
|
+
supabase link
|
|
141
|
+
|
|
142
|
+
Examples
|
|
143
|
+
supabee sync schema
|
|
144
|
+
supabee sync data
|
|
145
|
+
supabee db reset 20260309180959
|
|
146
|
+
supabee start 20260309180959
|
|
147
|
+
|
|
148
|
+
Manual Processing (existing dump files)
|
|
149
|
+
supabee schema
|
|
150
|
+
supabee data
|
|
137
151
|
`);
|
|
138
152
|
program
|
|
139
153
|
.command('init')
|
|
@@ -161,18 +175,18 @@ for (const commandName of ['schema', 'data']) {
|
|
|
161
175
|
const syncCommand = program
|
|
162
176
|
.command('sync')
|
|
163
177
|
.description('Dump from linked project, then split/reconstruct/validate')
|
|
164
|
-
.addHelpText('after', `
|
|
165
|
-
Main Usage
|
|
166
|
-
supabee sync schema
|
|
167
|
-
supabee sync data
|
|
168
|
-
|
|
169
|
-
Examples
|
|
170
|
-
supabee sync schema
|
|
171
|
-
supabee sync data --input supabase/seeds/prod-data.sql
|
|
172
|
-
supabee sync data --no-backup
|
|
173
|
-
|
|
174
|
-
Note
|
|
175
|
-
Requires \`supabase link\` to be configured for this project.
|
|
178
|
+
.addHelpText('after', `
|
|
179
|
+
Main Usage
|
|
180
|
+
supabee sync schema
|
|
181
|
+
supabee sync data
|
|
182
|
+
|
|
183
|
+
Examples
|
|
184
|
+
supabee sync schema
|
|
185
|
+
supabee sync data --input supabase/seeds/prod-data.sql
|
|
186
|
+
supabee sync data --no-backup
|
|
187
|
+
|
|
188
|
+
Note
|
|
189
|
+
Requires \`supabase link\` to be configured for this project.
|
|
176
190
|
`);
|
|
177
191
|
syncCommand
|
|
178
192
|
.command('schema')
|
|
@@ -181,9 +195,8 @@ syncCommand
|
|
|
181
195
|
.option('--output <path>', 'Split output path override for schema processing')
|
|
182
196
|
.option('--backup', 'Backup existing split output before replacing')
|
|
183
197
|
.option('--no-backup', 'Do not backup dirty split output folder before split')
|
|
184
|
-
.
|
|
185
|
-
|
|
186
|
-
});
|
|
198
|
+
.option('--force', 'Skip linked migration alignment preflight for sync')
|
|
199
|
+
.action((options = {}) => runSyncCommand('schema', options));
|
|
187
200
|
syncCommand
|
|
188
201
|
.command('data')
|
|
189
202
|
.description('Run `supabase db dump --data-only`, then process data files')
|
|
@@ -191,52 +204,80 @@ syncCommand
|
|
|
191
204
|
.option('--output <path>', 'Split output path override for data processing')
|
|
192
205
|
.option('--backup', 'Backup existing split output before replacing')
|
|
193
206
|
.option('--no-backup', 'Do not backup dirty split output folder before split')
|
|
194
|
-
.
|
|
195
|
-
|
|
196
|
-
|
|
207
|
+
.option('--force', 'Skip linked migration alignment preflight for sync')
|
|
208
|
+
.action((options = {}) => runSyncCommand('data', options));
|
|
209
|
+
const cutoffCommand = program.command('cutoff').description('Cutoff detection helpers');
|
|
210
|
+
cutoffCommand
|
|
211
|
+
.command('detect [cutoffTimestamp]')
|
|
212
|
+
.description('Resolve cutoff from argument, linked migration alignment, or configured fallback')
|
|
213
|
+
.option('--env <name>', 'Environment key used for postSeedCutoffByEnv fallback lookup')
|
|
214
|
+
.option('--json', 'Print machine-readable JSON output')
|
|
215
|
+
.action((cutoffTimestamp, options = {}) => runCutoffDetectCommand(cutoffTimestamp, options));
|
|
216
|
+
const migrationCommand = program.command('migration').description('Migration classification helpers');
|
|
217
|
+
migrationCommand
|
|
218
|
+
.command('audit')
|
|
219
|
+
.description('Classify migrations as data/schema/mixed/unknown and show suggested marker actions')
|
|
220
|
+
.option('--migrations-dir <path>', 'Migrations directory', 'supabase/migrations')
|
|
221
|
+
.option('--json', 'Print machine-readable audit output')
|
|
222
|
+
.option('--verbose', 'Include detailed classifier evidence in output')
|
|
223
|
+
.action((options = {}) => runMigrationAuditCommand(options));
|
|
224
|
+
migrationCommand
|
|
225
|
+
.command('mark')
|
|
226
|
+
.description('Add marker comments to classified migration files (interactive by default)')
|
|
227
|
+
.option('--migrations-dir <path>', 'Migrations directory', 'supabase/migrations')
|
|
228
|
+
.option('--dry-run', 'Preview marker updates without writing files')
|
|
229
|
+
.option('--yes', 'Apply all suggested marker updates without interactive prompts')
|
|
230
|
+
.action((options = {}) => runMigrationMarkCommand(options));
|
|
231
|
+
migrationCommand
|
|
232
|
+
.command('unmark')
|
|
233
|
+
.description('Remove marker comments from migration files (interactive by default)')
|
|
234
|
+
.option('--migrations-dir <path>', 'Migrations directory', 'supabase/migrations')
|
|
235
|
+
.option('--dry-run', 'Preview marker removals without writing files')
|
|
236
|
+
.option('--yes', 'Remove all found marker updates without interactive prompts')
|
|
237
|
+
.action((options = {}) => runMigrationUnmarkCommand(options));
|
|
197
238
|
const dbCommand = program.command('db').description('Database orchestration commands');
|
|
198
239
|
dbCommand
|
|
199
240
|
.command('reset [cutoffTimestamp]')
|
|
200
241
|
.description('Reset DB, then apply deferred post-seed migrations (auto cutoff if omitted)')
|
|
201
242
|
.option('--psql', 'Apply deferred migrations via raw psql instead of supabase migration up')
|
|
243
|
+
.option('--strict-mixed', 'Fail when any mixed schema+DML migration is detected (default: fail only after cutoff)')
|
|
202
244
|
.option('--migrations-dir <path>', 'Migrations directory', 'supabase/migrations')
|
|
203
245
|
.option('--temp-dir <path>', 'Temporary directory for deferred migrations', 'supabase/.tmp-migrations')
|
|
204
|
-
.
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
supabee db reset
|
|
214
|
-
supabee db reset
|
|
246
|
+
.option('--env <name>', 'Environment key used for postSeedCutoffByEnv fallback lookup')
|
|
247
|
+
.addHelpText('after', `
|
|
248
|
+
What This Command Does
|
|
249
|
+
1) Defers migrations with timestamps greater than <cutoffTimestamp>
|
|
250
|
+
2) Runs \`supabase db reset\`
|
|
251
|
+
3) Restores deferred migration files
|
|
252
|
+
4) Reapplies deferred migrations
|
|
253
|
+
|
|
254
|
+
Examples
|
|
255
|
+
supabee db reset 20260309180959
|
|
256
|
+
supabee db reset
|
|
257
|
+
supabee db reset 20260309180959 --psql
|
|
215
258
|
`)
|
|
216
|
-
.action(
|
|
217
|
-
await runDbResetCommand(cutoffTimestamp, options);
|
|
218
|
-
});
|
|
259
|
+
.action((cutoffTimestamp, options = {}) => runDbResetCommand(cutoffTimestamp, options));
|
|
219
260
|
program
|
|
220
261
|
.command('start [cutoffTimestamp]')
|
|
221
262
|
.description('Start Supabase with deferred post-seed migrations applied after startup')
|
|
222
263
|
.option('--psql', 'Apply deferred migrations via raw psql instead of supabase migration up')
|
|
264
|
+
.option('--strict-mixed', 'Fail when any mixed schema+DML migration is detected (default: fail only after cutoff)')
|
|
223
265
|
.option('--migrations-dir <path>', 'Migrations directory', 'supabase/migrations')
|
|
224
266
|
.option('--temp-dir <path>', 'Temporary directory for deferred migrations', 'supabase/.tmp-migrations')
|
|
225
|
-
.
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
supabee start
|
|
235
|
-
supabee start
|
|
267
|
+
.option('--env <name>', 'Environment key used for postSeedCutoffByEnv fallback lookup')
|
|
268
|
+
.addHelpText('after', `
|
|
269
|
+
What This Command Does
|
|
270
|
+
1) Defers migrations with timestamps greater than [cutoffTimestamp]
|
|
271
|
+
2) Runs \`supabase start\`
|
|
272
|
+
3) Restores deferred migration files
|
|
273
|
+
4) Reapplies deferred migrations
|
|
274
|
+
|
|
275
|
+
Examples
|
|
276
|
+
supabee start 20260309180959
|
|
277
|
+
supabee start
|
|
278
|
+
supabee start --psql
|
|
236
279
|
`)
|
|
237
|
-
.action(
|
|
238
|
-
await runStartCommand(cutoffTimestamp, options);
|
|
239
|
-
});
|
|
280
|
+
.action((cutoffTimestamp, options = {}) => runStartCommand(cutoffTimestamp, options));
|
|
240
281
|
async function main() {
|
|
241
282
|
const args = process.argv.slice(2);
|
|
242
283
|
maybePrintGlobalInstallHint(args);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/constants.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAC9D,MAAM,CAAC,MAAM,uBAAuB,GAAG,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAC9D,MAAM,CAAC,MAAM,uBAAuB,GAAG,+BAA+B,CAAC;AAsCvE,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,MAAM,EAAE;QACN,KAAK,EAAE,mCAAmC;QAC1C,MAAM,EAAE,wBAAwB;QAChC,aAAa,EAAE,4CAA4C;QAC3D,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,EAAE;KACd;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,8BAA8B;QACrC,MAAM,EAAE,sBAAsB;QAC9B,aAAa,EAAE,uCAAuC;QACtD,MAAM,EAAE,KAAK;QACb,eAAe,EAAE,IAAI;QACrB,oBAAoB,EAAE,EAAE;QACxB,gBAAgB,EAAE,GAAG;QACrB,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,mBAAmB,EAAE,EAAE;KACxB;CACF,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export type MigrationClassification = 'data' | 'schema' | 'mixed' | 'unknown';
|
|
2
|
+
export type MigrationClassificationSource = 'marker' | 'heuristic';
|
|
3
|
+
export type RecommendedMarker = 'data' | 'schema' | null;
|
|
4
|
+
export type MigrationClassificationResult = {
|
|
5
|
+
fileName: string;
|
|
6
|
+
filePath: string;
|
|
7
|
+
timestamp: number;
|
|
8
|
+
classification: MigrationClassification;
|
|
9
|
+
source: MigrationClassificationSource;
|
|
10
|
+
reasons: string[];
|
|
11
|
+
hasDataMarker: boolean;
|
|
12
|
+
hasSchemaMarker: boolean;
|
|
13
|
+
recommendedMarker: RecommendedMarker;
|
|
14
|
+
evidence: {
|
|
15
|
+
markerMatches: Array<{
|
|
16
|
+
marker: string;
|
|
17
|
+
line: number;
|
|
18
|
+
snippet: string;
|
|
19
|
+
}>;
|
|
20
|
+
ddlMatches: Array<{
|
|
21
|
+
pattern: string;
|
|
22
|
+
line: number;
|
|
23
|
+
snippet: string;
|
|
24
|
+
}>;
|
|
25
|
+
dmlMatches: Array<{
|
|
26
|
+
pattern: string;
|
|
27
|
+
line: number;
|
|
28
|
+
snippet: string;
|
|
29
|
+
}>;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
export type MigrationClassifierOptions = {
|
|
33
|
+
migrationsDir: string;
|
|
34
|
+
};
|
|
35
|
+
export declare function classifyMigrations(options: MigrationClassifierOptions): Promise<MigrationClassificationResult[]>;
|
|
36
|
+
export declare function resolveMarkers(): {
|
|
37
|
+
dataMarker: string;
|
|
38
|
+
schemaMarker: string;
|
|
39
|
+
};
|