supabee 0.3.1 → 0.3.3
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 +410 -330
- 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 +1 -0
- package/dist/commands/db-reset.js +101 -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 +16 -0
- package/dist/commands/migration.js +234 -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 +111 -75
- 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 +22 -0
- package/dist/lib/migration-classifier.js +240 -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
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import readline from 'node:readline/promises';
|
|
4
|
+
import { stdin as input, stdout as output } from 'node:process';
|
|
5
|
+
import { classifyMigrations, resolveMarkers, } from '../lib/migration-classifier.js';
|
|
6
|
+
import { info, ok, sectionWithNote, title, warn } from '../lib/ui.js';
|
|
7
|
+
const DEFAULT_MIGRATIONS_DIR = 'supabase/migrations';
|
|
8
|
+
function absoluteMigrationsDir(dir) {
|
|
9
|
+
return path.resolve(process.cwd(), dir ?? DEFAULT_MIGRATIONS_DIR);
|
|
10
|
+
}
|
|
11
|
+
async function ensureDirectoryExists(dirPath) {
|
|
12
|
+
const stats = await fs.promises.stat(dirPath).catch(() => null);
|
|
13
|
+
if (!stats || !stats.isDirectory()) {
|
|
14
|
+
throw new Error(`Migrations directory not found: ${dirPath}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function recommendationText(result) {
|
|
18
|
+
if (result.classification === 'mixed') {
|
|
19
|
+
return 'Split file into schema-only and data-only migrations';
|
|
20
|
+
}
|
|
21
|
+
if (result.classification === 'unknown') {
|
|
22
|
+
return 'No automatic action';
|
|
23
|
+
}
|
|
24
|
+
if (!result.recommendedMarker) {
|
|
25
|
+
return 'No marker change needed';
|
|
26
|
+
}
|
|
27
|
+
return `Add ${result.recommendedMarker} marker`;
|
|
28
|
+
}
|
|
29
|
+
function markerLine(markerType, markers) {
|
|
30
|
+
if (markerType === 'data')
|
|
31
|
+
return `-- ${markers.dataMarker}`;
|
|
32
|
+
if (markerType === 'schema')
|
|
33
|
+
return `-- ${markers.schemaMarker}`;
|
|
34
|
+
throw new Error('Invalid marker type');
|
|
35
|
+
}
|
|
36
|
+
function prependMarker(sql, marker) {
|
|
37
|
+
if (sql.startsWith('\uFEFF')) {
|
|
38
|
+
const withoutBom = sql.slice(1);
|
|
39
|
+
return `\uFEFF${marker}\n\n${withoutBom}`;
|
|
40
|
+
}
|
|
41
|
+
return `${marker}\n\n${sql}`;
|
|
42
|
+
}
|
|
43
|
+
function removeMarkerLines(sql, markers) {
|
|
44
|
+
const hadBom = sql.startsWith('\uFEFF');
|
|
45
|
+
const raw = hadBom ? sql.slice(1) : sql;
|
|
46
|
+
const lines = raw.split('\n');
|
|
47
|
+
const markerValues = [markers.dataMarker, markers.schemaMarker];
|
|
48
|
+
let removed = false;
|
|
49
|
+
const kept = lines.filter((line) => {
|
|
50
|
+
const trimmed = line.trim();
|
|
51
|
+
for (const marker of markerValues) {
|
|
52
|
+
if (trimmed === `-- ${marker}` || trimmed === `--${marker}`) {
|
|
53
|
+
removed = true;
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return true;
|
|
58
|
+
});
|
|
59
|
+
const updated = kept.join('\n');
|
|
60
|
+
return { updated: hadBom ? `\uFEFF${updated}` : updated, removed };
|
|
61
|
+
}
|
|
62
|
+
function printClassificationRow(result) {
|
|
63
|
+
console.log(info(`${result.fileName}`));
|
|
64
|
+
console.log(info(` class = ${result.classification} (${result.source})`));
|
|
65
|
+
console.log(info(` reason = ${result.reasons.join('; ')}`));
|
|
66
|
+
console.log(info(` recommendation = ${recommendationText(result)}`));
|
|
67
|
+
}
|
|
68
|
+
export async function runMigrationAuditCommand(options = {}) {
|
|
69
|
+
const migrationsDir = absoluteMigrationsDir(options.migrationsDir);
|
|
70
|
+
await ensureDirectoryExists(migrationsDir);
|
|
71
|
+
const markers = resolveMarkers();
|
|
72
|
+
const results = await classifyMigrations({ migrationsDir });
|
|
73
|
+
console.log(sectionWithNote(title('Migration audit'), 'Classifies migration files as data/schema/mixed/unknown.'));
|
|
74
|
+
console.log(info(`migrationsDir = ${migrationsDir}`));
|
|
75
|
+
console.log(info(`dataMarker = ${markers.dataMarker}`));
|
|
76
|
+
console.log(info(`schemaMarker = ${markers.schemaMarker}`));
|
|
77
|
+
console.log('');
|
|
78
|
+
if (results.length === 0) {
|
|
79
|
+
console.log(warn('No migration files found.'));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
let dataCount = 0;
|
|
83
|
+
let schemaCount = 0;
|
|
84
|
+
let mixedCount = 0;
|
|
85
|
+
let unknownCount = 0;
|
|
86
|
+
let suggestedMarkerCount = 0;
|
|
87
|
+
for (const result of results) {
|
|
88
|
+
if (result.classification === 'data')
|
|
89
|
+
dataCount += 1;
|
|
90
|
+
if (result.classification === 'schema')
|
|
91
|
+
schemaCount += 1;
|
|
92
|
+
if (result.classification === 'mixed')
|
|
93
|
+
mixedCount += 1;
|
|
94
|
+
if (result.classification === 'unknown')
|
|
95
|
+
unknownCount += 1;
|
|
96
|
+
if (result.recommendedMarker)
|
|
97
|
+
suggestedMarkerCount += 1;
|
|
98
|
+
printClassificationRow(result);
|
|
99
|
+
}
|
|
100
|
+
console.log('');
|
|
101
|
+
console.log(ok(`Summary: data=${dataCount} schema=${schemaCount} mixed=${mixedCount} unknown=${unknownCount}`));
|
|
102
|
+
console.log(info(`Suggested marker updates: ${suggestedMarkerCount}`));
|
|
103
|
+
if (mixedCount > 0) {
|
|
104
|
+
console.log(warn('Mixed files detected. Split schema and data into separate migration files.'));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
export async function runMigrationMarkCommand(options = {}) {
|
|
108
|
+
const migrationsDir = absoluteMigrationsDir(options.migrationsDir);
|
|
109
|
+
await ensureDirectoryExists(migrationsDir);
|
|
110
|
+
const markers = resolveMarkers();
|
|
111
|
+
const results = await classifyMigrations({ migrationsDir });
|
|
112
|
+
const mixed = results.filter((result) => result.classification === 'mixed');
|
|
113
|
+
if (mixed.length > 0) {
|
|
114
|
+
const names = mixed.map((m) => m.fileName).join(', ');
|
|
115
|
+
throw new Error(`Cannot mark migrations while mixed schema+DML files exist: ${names}\nSplit each mixed migration into schema-only and data-only files, then re-run.`);
|
|
116
|
+
}
|
|
117
|
+
const candidates = results.filter((result) => result.recommendedMarker !== null);
|
|
118
|
+
console.log(sectionWithNote(title('Migration mark'), 'Suggests and applies marker comments to migration files.'));
|
|
119
|
+
console.log(info(`migrationsDir = ${migrationsDir}`));
|
|
120
|
+
console.log(info(`candidates = ${candidates.length}`));
|
|
121
|
+
console.log('');
|
|
122
|
+
if (candidates.length === 0) {
|
|
123
|
+
console.log(ok('No marker updates needed.'));
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
for (const candidate of candidates) {
|
|
127
|
+
const marker = markerLine(candidate.recommendedMarker, markers);
|
|
128
|
+
console.log(info(`${candidate.fileName}`));
|
|
129
|
+
console.log(info(` add = ${marker}`));
|
|
130
|
+
console.log(info(` reason = ${candidate.reasons.join('; ')}`));
|
|
131
|
+
}
|
|
132
|
+
if (options.dryRun === true) {
|
|
133
|
+
console.log('');
|
|
134
|
+
console.log(info('Dry run only. Re-run without `--dry-run` to confirm and write markers.'));
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const confirmed = [];
|
|
138
|
+
if (options.yes === true) {
|
|
139
|
+
confirmed.push(...candidates);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
const rl = readline.createInterface({ input, output });
|
|
143
|
+
try {
|
|
144
|
+
for (const candidate of candidates) {
|
|
145
|
+
const marker = markerLine(candidate.recommendedMarker, markers);
|
|
146
|
+
const answer = await rl.question(`Add "${marker}" to ${candidate.fileName}? [y/N] `);
|
|
147
|
+
const accepted = answer.trim().toLowerCase();
|
|
148
|
+
if (accepted === 'y' || accepted === 'yes') {
|
|
149
|
+
confirmed.push(candidate);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
finally {
|
|
154
|
+
rl.close();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (confirmed.length === 0) {
|
|
158
|
+
console.log('');
|
|
159
|
+
console.log(warn('No marker updates selected. Nothing written.'));
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
for (const candidate of confirmed) {
|
|
163
|
+
const marker = markerLine(candidate.recommendedMarker, markers);
|
|
164
|
+
const original = await fs.promises.readFile(candidate.filePath, 'utf8');
|
|
165
|
+
const updated = prependMarker(original, marker);
|
|
166
|
+
await fs.promises.writeFile(candidate.filePath, updated, 'utf8');
|
|
167
|
+
console.log(ok(`Updated ${candidate.fileName}`));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
export async function runMigrationUnmarkCommand(options = {}) {
|
|
171
|
+
const migrationsDir = absoluteMigrationsDir(options.migrationsDir);
|
|
172
|
+
await ensureDirectoryExists(migrationsDir);
|
|
173
|
+
const markers = resolveMarkers();
|
|
174
|
+
const results = await classifyMigrations({ migrationsDir });
|
|
175
|
+
const candidates = results.filter((result) => result.hasDataMarker || result.hasSchemaMarker);
|
|
176
|
+
console.log(sectionWithNote(title('Migration unmark'), 'Removes marker comments from migration files.'));
|
|
177
|
+
console.log(info(`migrationsDir = ${migrationsDir}`));
|
|
178
|
+
console.log(info(`candidates = ${candidates.length}`));
|
|
179
|
+
console.log('');
|
|
180
|
+
if (candidates.length === 0) {
|
|
181
|
+
console.log(ok('No marker lines found.'));
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
for (const candidate of candidates) {
|
|
185
|
+
const removals = [];
|
|
186
|
+
if (candidate.hasDataMarker)
|
|
187
|
+
removals.push(`-- ${markers.dataMarker}`);
|
|
188
|
+
if (candidate.hasSchemaMarker)
|
|
189
|
+
removals.push(`-- ${markers.schemaMarker}`);
|
|
190
|
+
console.log(info(`${candidate.fileName}`));
|
|
191
|
+
console.log(info(` remove = ${removals.join(', ')}`));
|
|
192
|
+
console.log(info(` reason = explicit marker override cleanup`));
|
|
193
|
+
}
|
|
194
|
+
if (options.dryRun === true) {
|
|
195
|
+
console.log('');
|
|
196
|
+
console.log(info('Dry run only. Re-run without `--dry-run` to confirm and remove markers.'));
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
const confirmed = [];
|
|
200
|
+
if (options.yes === true) {
|
|
201
|
+
confirmed.push(...candidates);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
const rl = readline.createInterface({ input, output });
|
|
205
|
+
try {
|
|
206
|
+
for (const candidate of candidates) {
|
|
207
|
+
const answer = await rl.question(`Remove markers from ${candidate.fileName}? [y/N] `);
|
|
208
|
+
const accepted = answer.trim().toLowerCase();
|
|
209
|
+
if (accepted === 'y' || accepted === 'yes') {
|
|
210
|
+
confirmed.push(candidate);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
finally {
|
|
215
|
+
rl.close();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (confirmed.length === 0) {
|
|
219
|
+
console.log('');
|
|
220
|
+
console.log(warn('No files selected. Nothing written.'));
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
for (const candidate of confirmed) {
|
|
224
|
+
const original = await fs.promises.readFile(candidate.filePath, 'utf8');
|
|
225
|
+
const { updated, removed } = removeMarkerLines(original, markers);
|
|
226
|
+
if (!removed) {
|
|
227
|
+
console.log(warn(`Skipped ${candidate.fileName}; no marker line found at write time.`));
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
await fs.promises.writeFile(candidate.filePath, updated, 'utf8');
|
|
231
|
+
console.log(ok(`Updated ${candidate.fileName}`));
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/commands/migration.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/sync.d.ts
CHANGED
package/dist/commands/sync.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import { resolveCommandConfig } from '../lib/config.js';
|
|
3
|
-
import { info, ok, sectionWithNote, title } from '../lib/ui.js';
|
|
3
|
+
import { info, ok, sectionWithNote, title, warn } from '../lib/ui.js';
|
|
4
4
|
import { runSchemaCommand } from './schema.js';
|
|
5
5
|
import { runDataCommand } from './data.js';
|
|
6
|
-
import { runCommandToFile } from '../lib/subprocess.js';
|
|
6
|
+
import { runCommandCapture, runCommandToFile } from '../lib/subprocess.js';
|
|
7
|
+
import { compareMigrationVersions, isValidMigrationVersion, parseMigrationListOutput, } from '../lib/post-seed-cutoff.js';
|
|
7
8
|
function buildWorkflowArgs(inputFile, options) {
|
|
8
9
|
const args = ['--input', inputFile];
|
|
9
10
|
if (options.output)
|
|
@@ -22,7 +23,54 @@ async function assertDumpHasContent(filePath) {
|
|
|
22
23
|
throw new Error(`Supabase dump produced an empty file: ${filePath}\nAborting before split so existing output files are not cleared.`);
|
|
23
24
|
}
|
|
24
25
|
}
|
|
26
|
+
function latestVersionFromRows(rows, key) {
|
|
27
|
+
const versions = new Set();
|
|
28
|
+
for (const row of rows) {
|
|
29
|
+
const value = row[key];
|
|
30
|
+
if (isValidMigrationVersion(value))
|
|
31
|
+
versions.add(value);
|
|
32
|
+
}
|
|
33
|
+
let latest = null;
|
|
34
|
+
for (const version of versions) {
|
|
35
|
+
if (!latest || compareMigrationVersions(version, latest) > 0) {
|
|
36
|
+
latest = version;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return latest;
|
|
40
|
+
}
|
|
41
|
+
async function assertLinkedMigrationAlignmentForSync(force) {
|
|
42
|
+
try {
|
|
43
|
+
const { stdout } = await runCommandCapture('supabase', ['migration', 'list', '--linked']);
|
|
44
|
+
const rows = parseMigrationListOutput(stdout);
|
|
45
|
+
if (rows.length === 0) {
|
|
46
|
+
if (force) {
|
|
47
|
+
console.log(warn('Linked migration alignment preflight returned no rows. Continuing due to --force.'));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
throw new Error('Linked migration alignment preflight returned no rows.');
|
|
51
|
+
}
|
|
52
|
+
const latestLocal = latestVersionFromRows(rows, 'local');
|
|
53
|
+
const latestRemote = latestVersionFromRows(rows, 'remote');
|
|
54
|
+
if (latestLocal === latestRemote)
|
|
55
|
+
return;
|
|
56
|
+
const message = `Local/remote migrations are not aligned (latestLocal=${latestLocal ?? '(none)'} latestRemote=${latestRemote ?? '(none)'}).`;
|
|
57
|
+
if (force) {
|
|
58
|
+
console.log(warn(`${message} Continuing due to --force.`));
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
throw new Error(`${message} Re-run with --force to override.`);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (force) {
|
|
65
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
66
|
+
console.log(warn(`Could not validate linked migration alignment. Continuing due to --force. Details: ${message}`));
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
25
72
|
export async function runSyncCommand(target, options = {}) {
|
|
73
|
+
await assertLinkedMigrationAlignmentForSync(options.force === true);
|
|
26
74
|
const resolved = target === 'schema'
|
|
27
75
|
? resolveCommandConfig('schema', { input: options.input, output: options.output })
|
|
28
76
|
: resolveCommandConfig('data', { input: options.input, output: options.output });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,8 @@ import { runDataCommand } from './commands/data.js';
|
|
|
5
5
|
import { runInitCommand } from './commands/init.js';
|
|
6
6
|
import { runSyncCommand } from './commands/sync.js';
|
|
7
7
|
import { runDbResetCommand, runStartCommand } from './commands/db-reset.js';
|
|
8
|
+
import { runCutoffDetectCommand } from './commands/cutoff.js';
|
|
9
|
+
import { runMigrationAuditCommand, runMigrationMarkCommand, runMigrationUnmarkCommand } from './commands/migration.js';
|
|
8
10
|
import { runCommand } from './lib/subprocess.js';
|
|
9
11
|
import { error as errText, info, warn } from './lib/ui.js';
|
|
10
12
|
function buildStepArgs(step, reconstructed, options = {}) {
|
|
@@ -25,8 +27,9 @@ function buildStepArgs(step, reconstructed, options = {}) {
|
|
|
25
27
|
args.push(reconstructed);
|
|
26
28
|
return args;
|
|
27
29
|
}
|
|
28
|
-
const KNOWN_TOP_LEVEL_COMMANDS = new Set(['init', 'schema', 'data', 'sync', 'db', 'start', 'help']);
|
|
30
|
+
const KNOWN_TOP_LEVEL_COMMANDS = new Set(['init', 'schema', 'data', 'sync', 'db', 'start', 'cutoff', 'migration', 'help']);
|
|
29
31
|
const KNOWN_DB_SUBCOMMANDS = new Set(['reset', 'help']);
|
|
32
|
+
const KNOWN_MIGRATION_SUBCOMMANDS = new Set(['audit', 'mark', 'unmark', 'help']);
|
|
30
33
|
function firstNonOptionToken(args) {
|
|
31
34
|
for (let index = 0; index < args.length; index += 1) {
|
|
32
35
|
const token = args[index];
|
|
@@ -80,15 +83,25 @@ async function maybePassthroughToSupabase(args) {
|
|
|
80
83
|
if (!topLevel)
|
|
81
84
|
return false;
|
|
82
85
|
if (KNOWN_TOP_LEVEL_COMMANDS.has(topLevel.token)) {
|
|
83
|
-
if (topLevel.token
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
if (topLevel.token === 'db') {
|
|
87
|
+
const dbSubcommand = firstNonOptionToken(args.slice(topLevel.index + 1));
|
|
88
|
+
if (!dbSubcommand || KNOWN_DB_SUBCOMMANDS.has(dbSubcommand.token)) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
console.log(info(`Forwarding to Supabase CLI: supabase ${args.join(' ')}`));
|
|
92
|
+
await runCommand('supabase', args);
|
|
93
|
+
return true;
|
|
88
94
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
95
|
+
if (topLevel.token === 'migration') {
|
|
96
|
+
const migrationSubcommand = firstNonOptionToken(args.slice(topLevel.index + 1));
|
|
97
|
+
if (!migrationSubcommand || KNOWN_MIGRATION_SUBCOMMANDS.has(migrationSubcommand.token)) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
console.log(info(`Forwarding to Supabase CLI: supabase ${args.join(' ')}`));
|
|
101
|
+
await runCommand('supabase', args);
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
return false;
|
|
92
105
|
}
|
|
93
106
|
console.log(info(`Forwarding to Supabase CLI: supabase ${args.join(' ')}`));
|
|
94
107
|
await runCommand('supabase', args);
|
|
@@ -99,26 +112,26 @@ program
|
|
|
99
112
|
.name('supabee')
|
|
100
113
|
.description('Supabase sync and migration orchestration CLI.')
|
|
101
114
|
.showHelpAfterError('(run with --help for usage)')
|
|
102
|
-
.addHelpText('after', `
|
|
103
|
-
Main Workflows
|
|
104
|
-
supabee sync schema
|
|
105
|
-
supabee sync data
|
|
106
|
-
supabee db reset [cutoff_timestamp]
|
|
107
|
-
supabee start [cutoff_timestamp]
|
|
108
|
-
|
|
109
|
-
Setup (once per project)
|
|
110
|
-
supabee init
|
|
111
|
-
supabase link
|
|
112
|
-
|
|
113
|
-
Examples
|
|
114
|
-
supabee sync schema
|
|
115
|
-
supabee sync data
|
|
116
|
-
supabee db reset 20260309180959
|
|
117
|
-
supabee start 20260309180959
|
|
118
|
-
|
|
119
|
-
Manual Processing (existing dump files)
|
|
120
|
-
supabee schema
|
|
121
|
-
supabee data
|
|
115
|
+
.addHelpText('after', `
|
|
116
|
+
Main Workflows
|
|
117
|
+
supabee sync schema
|
|
118
|
+
supabee sync data
|
|
119
|
+
supabee db reset [cutoff_timestamp]
|
|
120
|
+
supabee start [cutoff_timestamp]
|
|
121
|
+
|
|
122
|
+
Setup (once per project)
|
|
123
|
+
supabee init
|
|
124
|
+
supabase link
|
|
125
|
+
|
|
126
|
+
Examples
|
|
127
|
+
supabee sync schema
|
|
128
|
+
supabee sync data
|
|
129
|
+
supabee db reset 20260309180959
|
|
130
|
+
supabee start 20260309180959
|
|
131
|
+
|
|
132
|
+
Manual Processing (existing dump files)
|
|
133
|
+
supabee schema
|
|
134
|
+
supabee data
|
|
122
135
|
`);
|
|
123
136
|
program
|
|
124
137
|
.command('init')
|
|
@@ -146,18 +159,18 @@ for (const commandName of ['schema', 'data']) {
|
|
|
146
159
|
const syncCommand = program
|
|
147
160
|
.command('sync')
|
|
148
161
|
.description('Dump from linked project, then split/reconstruct/validate')
|
|
149
|
-
.addHelpText('after', `
|
|
150
|
-
Main Usage
|
|
151
|
-
supabee sync schema
|
|
152
|
-
supabee sync data
|
|
153
|
-
|
|
154
|
-
Examples
|
|
155
|
-
supabee sync schema
|
|
156
|
-
supabee sync data --input supabase/seeds/prod-data.sql
|
|
157
|
-
supabee sync data --no-backup
|
|
158
|
-
|
|
159
|
-
Note
|
|
160
|
-
Requires \`supabase link\` to be configured for this project.
|
|
162
|
+
.addHelpText('after', `
|
|
163
|
+
Main Usage
|
|
164
|
+
supabee sync schema
|
|
165
|
+
supabee sync data
|
|
166
|
+
|
|
167
|
+
Examples
|
|
168
|
+
supabee sync schema
|
|
169
|
+
supabee sync data --input supabase/seeds/prod-data.sql
|
|
170
|
+
supabee sync data --no-backup
|
|
171
|
+
|
|
172
|
+
Note
|
|
173
|
+
Requires \`supabase link\` to be configured for this project.
|
|
161
174
|
`);
|
|
162
175
|
syncCommand
|
|
163
176
|
.command('schema')
|
|
@@ -166,9 +179,8 @@ syncCommand
|
|
|
166
179
|
.option('--output <path>', 'Split output path override for schema processing')
|
|
167
180
|
.option('--backup', 'Backup existing split output before replacing')
|
|
168
181
|
.option('--no-backup', 'Do not backup dirty split output folder before split')
|
|
169
|
-
.
|
|
170
|
-
|
|
171
|
-
});
|
|
182
|
+
.option('--force', 'Skip linked migration alignment preflight for sync')
|
|
183
|
+
.action((options = {}) => runSyncCommand('schema', options));
|
|
172
184
|
syncCommand
|
|
173
185
|
.command('data')
|
|
174
186
|
.description('Run `supabase db dump --data-only`, then process data files')
|
|
@@ -176,9 +188,35 @@ syncCommand
|
|
|
176
188
|
.option('--output <path>', 'Split output path override for data processing')
|
|
177
189
|
.option('--backup', 'Backup existing split output before replacing')
|
|
178
190
|
.option('--no-backup', 'Do not backup dirty split output folder before split')
|
|
179
|
-
.
|
|
180
|
-
|
|
181
|
-
|
|
191
|
+
.option('--force', 'Skip linked migration alignment preflight for sync')
|
|
192
|
+
.action((options = {}) => runSyncCommand('data', options));
|
|
193
|
+
const cutoffCommand = program.command('cutoff').description('Cutoff detection helpers');
|
|
194
|
+
cutoffCommand
|
|
195
|
+
.command('detect [cutoffTimestamp]')
|
|
196
|
+
.description('Resolve cutoff from argument, linked migration alignment, or configured fallback')
|
|
197
|
+
.option('--env <name>', 'Environment key used for postSeedCutoffByEnv fallback lookup')
|
|
198
|
+
.option('--json', 'Print machine-readable JSON output')
|
|
199
|
+
.action((cutoffTimestamp, options = {}) => runCutoffDetectCommand(cutoffTimestamp, options));
|
|
200
|
+
const migrationCommand = program.command('migration').description('Migration classification helpers');
|
|
201
|
+
migrationCommand
|
|
202
|
+
.command('audit')
|
|
203
|
+
.description('Classify migrations as data/schema/mixed/unknown and show suggested marker actions')
|
|
204
|
+
.option('--migrations-dir <path>', 'Migrations directory', 'supabase/migrations')
|
|
205
|
+
.action((options = {}) => runMigrationAuditCommand(options));
|
|
206
|
+
migrationCommand
|
|
207
|
+
.command('mark')
|
|
208
|
+
.description('Add marker comments to classified migration files (interactive by default)')
|
|
209
|
+
.option('--migrations-dir <path>', 'Migrations directory', 'supabase/migrations')
|
|
210
|
+
.option('--dry-run', 'Preview marker updates without writing files')
|
|
211
|
+
.option('--yes', 'Apply all suggested marker updates without interactive prompts')
|
|
212
|
+
.action((options = {}) => runMigrationMarkCommand(options));
|
|
213
|
+
migrationCommand
|
|
214
|
+
.command('unmark')
|
|
215
|
+
.description('Remove marker comments from migration files (interactive by default)')
|
|
216
|
+
.option('--migrations-dir <path>', 'Migrations directory', 'supabase/migrations')
|
|
217
|
+
.option('--dry-run', 'Preview marker removals without writing files')
|
|
218
|
+
.option('--yes', 'Remove all found marker updates without interactive prompts')
|
|
219
|
+
.action((options = {}) => runMigrationUnmarkCommand(options));
|
|
182
220
|
const dbCommand = program.command('db').description('Database orchestration commands');
|
|
183
221
|
dbCommand
|
|
184
222
|
.command('reset [cutoffTimestamp]')
|
|
@@ -186,42 +224,40 @@ dbCommand
|
|
|
186
224
|
.option('--psql', 'Apply deferred migrations via raw psql instead of supabase migration up')
|
|
187
225
|
.option('--migrations-dir <path>', 'Migrations directory', 'supabase/migrations')
|
|
188
226
|
.option('--temp-dir <path>', 'Temporary directory for deferred migrations', 'supabase/.tmp-migrations')
|
|
189
|
-
.
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
supabee db reset
|
|
199
|
-
supabee db reset
|
|
227
|
+
.option('--env <name>', 'Environment key used for postSeedCutoffByEnv fallback lookup')
|
|
228
|
+
.addHelpText('after', `
|
|
229
|
+
What This Command Does
|
|
230
|
+
1) Defers migrations with timestamps greater than <cutoffTimestamp>
|
|
231
|
+
2) Runs \`supabase db reset\`
|
|
232
|
+
3) Restores deferred migration files
|
|
233
|
+
4) Reapplies deferred migrations
|
|
234
|
+
|
|
235
|
+
Examples
|
|
236
|
+
supabee db reset 20260309180959
|
|
237
|
+
supabee db reset
|
|
238
|
+
supabee db reset 20260309180959 --psql
|
|
200
239
|
`)
|
|
201
|
-
.action(
|
|
202
|
-
await runDbResetCommand(cutoffTimestamp, options);
|
|
203
|
-
});
|
|
240
|
+
.action((cutoffTimestamp, options = {}) => runDbResetCommand(cutoffTimestamp, options));
|
|
204
241
|
program
|
|
205
242
|
.command('start [cutoffTimestamp]')
|
|
206
243
|
.description('Start Supabase with deferred post-seed migrations applied after startup')
|
|
207
244
|
.option('--psql', 'Apply deferred migrations via raw psql instead of supabase migration up')
|
|
208
245
|
.option('--migrations-dir <path>', 'Migrations directory', 'supabase/migrations')
|
|
209
246
|
.option('--temp-dir <path>', 'Temporary directory for deferred migrations', 'supabase/.tmp-migrations')
|
|
210
|
-
.
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
supabee start
|
|
220
|
-
supabee start
|
|
247
|
+
.option('--env <name>', 'Environment key used for postSeedCutoffByEnv fallback lookup')
|
|
248
|
+
.addHelpText('after', `
|
|
249
|
+
What This Command Does
|
|
250
|
+
1) Defers migrations with timestamps greater than [cutoffTimestamp]
|
|
251
|
+
2) Runs \`supabase start\`
|
|
252
|
+
3) Restores deferred migration files
|
|
253
|
+
4) Reapplies deferred migrations
|
|
254
|
+
|
|
255
|
+
Examples
|
|
256
|
+
supabee start 20260309180959
|
|
257
|
+
supabee start
|
|
258
|
+
supabee start --psql
|
|
221
259
|
`)
|
|
222
|
-
.action(
|
|
223
|
-
await runStartCommand(cutoffTimestamp, options);
|
|
224
|
-
});
|
|
260
|
+
.action((cutoffTimestamp, options = {}) => runStartCommand(cutoffTimestamp, options));
|
|
225
261
|
async function main() {
|
|
226
262
|
const args = process.argv.slice(2);
|
|
227
263
|
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,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