supabee 0.2.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { runSchemaCommand } from './commands/schema.js';
4
+ import { runDataCommand } from './commands/data.js';
5
+ import { runInitCommand } from './commands/init.js';
6
+ import { error as errText } from './lib/ui.js';
7
+ function buildStepArgs(step, reconstructed, options = {}) {
8
+ const args = [];
9
+ if (step)
10
+ args.push(step);
11
+ if (options.input)
12
+ args.push('--input', options.input);
13
+ if (options.output)
14
+ args.push('--output', options.output);
15
+ if (options.backup)
16
+ args.push('--backup');
17
+ if (reconstructed)
18
+ args.push(reconstructed);
19
+ return args;
20
+ }
21
+ const program = new Command();
22
+ program
23
+ .name('supabee')
24
+ .description('Split large Supabase schema/data dumps into organized, version-control-friendly SQL files.')
25
+ .showHelpAfterError('(run with --help for usage)')
26
+ .addHelpText('after', `
27
+ Getting started:
28
+ 1. supabee init # generate config, update config.toml
29
+ 2. supabase link # link to your Supabase project (if not already linked)
30
+ 3. supabase db dump > supabase/schemas/prod-schemas.sql
31
+ 4. supabase db dump --data-only > supabase/seeds/prod-data.sql
32
+ 5. supabee schema # split → reconstruct → validate
33
+ 6. supabee data # split → reconstruct → validate
34
+
35
+ Examples:
36
+ supabee init
37
+ supabee schema
38
+ supabee data
39
+ supabee data split --input supabase/seeds/prod-data.sql --output supabase/seeds/split --backup
40
+ `);
41
+ program
42
+ .command('init')
43
+ .description('Generate config file (if missing) and update supabase/config.toml seed paths')
44
+ .action(async () => {
45
+ await runInitCommand([]);
46
+ });
47
+ for (const commandName of ['schema', 'data']) {
48
+ program
49
+ .command(`${commandName} [step] [reconstructed]`)
50
+ .description(`${commandName} split/reconstruct/validate, or run full chain when step is omitted`)
51
+ .option('--input <path>', 'Input SQL file or split folder (reconstruct)')
52
+ .option('--output <path>', 'Split output folder (split) or reconstructed file')
53
+ .option('--backup', 'Backup dirty split output folder before split')
54
+ .action(async (step, reconstructed, options = {}) => {
55
+ const forwarded = buildStepArgs(step, reconstructed, options);
56
+ if (commandName === 'schema') {
57
+ await runSchemaCommand(forwarded);
58
+ return;
59
+ }
60
+ await runDataCommand(forwarded);
61
+ });
62
+ }
63
+ program.parseAsync(process.argv).catch((error) => {
64
+ const message = error instanceof Error ? error.message : String(error);
65
+ console.error(errText(message));
66
+ process.exit(1);
67
+ });
68
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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,KAAK,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AAQ/C,SAAS,aAAa,CAAC,IAAa,EAAE,aAAsB,EAAE,UAA0B,EAAE;IACxF,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,OAAO,CAAC,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,aAAa;QAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CACV,4FAA4F,CAC7F;KACA,kBAAkB,CAAC,6BAA6B,CAAC;KACjD,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;CAcH,CACE,CAAC;AAEJ,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8EAA8E,CAAC;KAC3F,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,cAAc,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEL,KAAK,MAAM,WAAW,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;IAC7C,OAAO;SACJ,OAAO,CAAC,GAAG,WAAW,yBAAyB,CAAC;SAChD,WAAW,CACV,GAAG,WAAW,qEAAqE,CACpF;SACA,MAAM,CAAC,gBAAgB,EAAE,8CAA8C,CAAC;SACxE,MAAM,CAAC,iBAAiB,EAAE,mDAAmD,CAAC;SAC9E,MAAM,CAAC,UAAU,EAAE,+CAA+C,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,IAAa,EAAE,aAAsB,EAAE,UAA0B,EAAE,EAAE,EAAE;QACpF,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QACD,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACxD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ export type StepName = 'split' | 'reconstruct' | 'validate';
2
+ export type StepCommandOptions = {
3
+ input: string | null;
4
+ output: string | null;
5
+ backup: boolean;
6
+ help: boolean;
7
+ positional: string[];
8
+ };
9
+ export type ParsedStepCommandArgs = {
10
+ subcommand: string | null;
11
+ options: StepCommandOptions;
12
+ isUnknownSubcommand: boolean;
13
+ };
14
+ export type ResolvedStepPaths = {
15
+ inputFile: string;
16
+ outputDir: string;
17
+ reconstructedFile: string;
18
+ };
19
+ type ResolveStepPathsInput = {
20
+ defaults: ResolvedStepPaths;
21
+ options: StepCommandOptions;
22
+ subcommand: string | null;
23
+ step: StepName;
24
+ };
25
+ export declare function parseStepCommandArgs(args: string[]): ParsedStepCommandArgs;
26
+ export declare function printStepCommandHelp(commandName: any): void;
27
+ export declare function resolveStepPaths({ defaults, options, subcommand, step }: ResolveStepPathsInput): ResolvedStepPaths;
28
+ export {};
@@ -0,0 +1,87 @@
1
+ export function parseStepCommandArgs(args) {
2
+ const knownSubcommands = new Set(['split', 'reconstruct', 'validate']);
3
+ let subcommand = null;
4
+ let cursor = 0;
5
+ if (args[0] && !args[0].startsWith('-')) {
6
+ subcommand = args[0];
7
+ cursor = 1;
8
+ }
9
+ const options = {
10
+ input: null,
11
+ output: null,
12
+ backup: false,
13
+ help: false,
14
+ positional: [],
15
+ };
16
+ for (let i = cursor; i < args.length; i += 1) {
17
+ const arg = args[i];
18
+ if (arg === '--input' && args[i + 1]) {
19
+ options.input = args[i + 1];
20
+ i += 1;
21
+ }
22
+ else if (arg === '--output' && args[i + 1]) {
23
+ options.output = args[i + 1];
24
+ i += 1;
25
+ }
26
+ else if (arg === '--backup') {
27
+ options.backup = true;
28
+ }
29
+ else if (arg === '--help' || arg === '-h') {
30
+ options.help = true;
31
+ }
32
+ else if (!arg.startsWith('-')) {
33
+ options.positional.push(arg);
34
+ }
35
+ }
36
+ if (subcommand && !knownSubcommands.has(subcommand)) {
37
+ return { subcommand, options, isUnknownSubcommand: true };
38
+ }
39
+ return { subcommand, options, isUnknownSubcommand: false };
40
+ }
41
+ export function printStepCommandHelp(commandName) {
42
+ console.log(`${commandName} command:
43
+ supabee ${commandName}
44
+
45
+ Advanced:
46
+ supabee ${commandName} [split|reconstruct|validate] [--input <path>] [--output <dir>] [--backup]
47
+
48
+ Notes:
49
+ - No subcommand runs: split -> reconstruct -> validate
50
+ - split: --input=source.sql, --output=split-dir
51
+ - reconstruct: --input=split-dir, --output=reconstructed.sql
52
+ - validate: --input=source.sql, --output=reconstructed.sql (or positional reconstructed path)
53
+ `);
54
+ }
55
+ export function resolveStepPaths({ defaults, options, subcommand, step }) {
56
+ const inputFromCli = options.input;
57
+ const outputFromCli = options.output;
58
+ const positionalReconstructed = options.positional[0];
59
+ if (!subcommand) {
60
+ return {
61
+ inputFile: inputFromCli || defaults.inputFile,
62
+ outputDir: outputFromCli || defaults.outputDir,
63
+ reconstructedFile: defaults.reconstructedFile,
64
+ };
65
+ }
66
+ if (step === 'split') {
67
+ return {
68
+ inputFile: inputFromCli || defaults.inputFile,
69
+ outputDir: outputFromCli || defaults.outputDir,
70
+ reconstructedFile: defaults.reconstructedFile,
71
+ };
72
+ }
73
+ if (step === 'reconstruct') {
74
+ const splitDir = inputFromCli || defaults.outputDir;
75
+ return {
76
+ inputFile: defaults.inputFile,
77
+ outputDir: splitDir,
78
+ reconstructedFile: outputFromCli || defaults.reconstructedFile,
79
+ };
80
+ }
81
+ return {
82
+ inputFile: inputFromCli || defaults.inputFile,
83
+ outputDir: defaults.outputDir,
84
+ reconstructedFile: outputFromCli || positionalReconstructed || defaults.reconstructedFile,
85
+ };
86
+ }
87
+ //# sourceMappingURL=command-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-contract.js","sourceRoot":"","sources":["../../src/lib/command-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ type Handlers = {
2
+ split: () => Promise<unknown>;
3
+ reconstruct: () => Promise<unknown>;
4
+ validate: () => Promise<boolean>;
5
+ };
6
+ export declare function runSubcommandMode(commandName: string, subcommand: string | null, handlers: Handlers): Promise<void>;
7
+ export {};
@@ -0,0 +1,27 @@
1
+ export async function runSubcommandMode(commandName, subcommand, handlers) {
2
+ const validSubcommands = ['split', 'reconstruct', 'validate'];
3
+ if (!subcommand) {
4
+ await handlers.split();
5
+ await handlers.reconstruct();
6
+ const isValid = await handlers.validate();
7
+ if (!isValid)
8
+ process.exit(1);
9
+ return;
10
+ }
11
+ if (!validSubcommands.includes(subcommand)) {
12
+ console.error(`Unsupported ${commandName} command: ${subcommand}`);
13
+ process.exit(1);
14
+ }
15
+ if (subcommand === 'split') {
16
+ await handlers.split();
17
+ return;
18
+ }
19
+ if (subcommand === 'reconstruct') {
20
+ await handlers.reconstruct();
21
+ return;
22
+ }
23
+ const isValid = await handlers.validate();
24
+ if (!isValid)
25
+ process.exit(1);
26
+ }
27
+ //# sourceMappingURL=command-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-mode.js","sourceRoot":"","sources":["../../src/lib/command-mode.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,WAAmB,EAAE,UAAyB,EAAE,QAAkB;IACxG,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAE9D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,eAAe,WAAW,aAAa,UAAU,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;QACjC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC1C,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { type DataTableRule, type ToolConfig } from './constants.js';
2
+ export type SchemaConfig = {
3
+ inputFile: string;
4
+ outputDir: string;
5
+ reconstructedFile: string;
6
+ keepFiles: string[];
7
+ };
8
+ export type DataLimits = {
9
+ maxLinesPerFile: number;
10
+ maxStatementsPerFile: number;
11
+ maxRowsPerInsert: number;
12
+ };
13
+ export type DataConfig = {
14
+ inputFile: string;
15
+ outputDir: string;
16
+ reconstructedFile: string;
17
+ limits: DataLimits;
18
+ tableRules: Record<string, DataTableRule>;
19
+ keepFiles: string[];
20
+ ignoreInReconstruct: string[];
21
+ };
22
+ export declare function readToolConfig(): ToolConfig;
23
+ export declare function resolveCommandConfig(commandName: 'schema', cliOptions: Partial<{
24
+ input: string;
25
+ output: string;
26
+ reconstructed: string;
27
+ }>): SchemaConfig;
28
+ export declare function resolveCommandConfig(commandName: 'data', cliOptions: Partial<{
29
+ input: string;
30
+ output: string;
31
+ reconstructed: string;
32
+ }>): DataConfig;
@@ -0,0 +1,86 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { DEFAULTS, DEFAULT_TOOL_CONFIG_PATH, LEGACY_TOOL_CONFIG_PATH, } from './constants.js';
4
+ import { error as errText, warn as warnText } from './ui.js';
5
+ function asObject(value) {
6
+ return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
7
+ }
8
+ function asNumber(value, fallback) {
9
+ return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : fallback;
10
+ }
11
+ function asStringArray(value, fallback = []) {
12
+ if (!Array.isArray(value))
13
+ return fallback;
14
+ return value.filter((entry) => typeof entry === 'string' && entry.trim() !== '');
15
+ }
16
+ function asTableRules(value) {
17
+ return asObject(value);
18
+ }
19
+ export function readToolConfig() {
20
+ const primaryConfigPath = path.resolve(process.cwd(), DEFAULT_TOOL_CONFIG_PATH);
21
+ const legacyConfigPath = path.resolve(process.cwd(), LEGACY_TOOL_CONFIG_PATH);
22
+ let configPath = null;
23
+ if (fs.existsSync(primaryConfigPath)) {
24
+ configPath = primaryConfigPath;
25
+ }
26
+ else if (fs.existsSync(legacyConfigPath)) {
27
+ configPath = legacyConfigPath;
28
+ console.log(warnText(`Using legacy config file ${LEGACY_TOOL_CONFIG_PATH}. Consider renaming it to ${DEFAULT_TOOL_CONFIG_PATH}.`));
29
+ }
30
+ if (!configPath)
31
+ return {};
32
+ try {
33
+ const raw = fs.readFileSync(configPath, 'utf8');
34
+ const parsed = JSON.parse(raw);
35
+ return asObject(parsed);
36
+ }
37
+ catch (error) {
38
+ const message = error instanceof Error ? error.message : String(error);
39
+ console.error(errText(`Invalid tool config JSON at ${configPath}: ${message}`));
40
+ process.exit(1);
41
+ }
42
+ }
43
+ function resolveSchemaConfig(toolConfig, cliOptions) {
44
+ const configured = asObject(toolConfig.schema);
45
+ const merged = { ...DEFAULTS.schema, ...configured };
46
+ const inputValue = cliOptions.input ?? merged.input;
47
+ const outputValue = cliOptions.output ?? merged.output;
48
+ const reconstructedValue = cliOptions.reconstructed ?? merged.reconstructed;
49
+ return {
50
+ inputFile: path.resolve(process.cwd(), inputValue),
51
+ outputDir: path.resolve(process.cwd(), outputValue),
52
+ reconstructedFile: path.resolve(process.cwd(), reconstructedValue),
53
+ keepFiles: asStringArray(merged.keepFiles),
54
+ };
55
+ }
56
+ function resolveDataConfig(toolConfig, cliOptions) {
57
+ const configured = asObject(toolConfig.data);
58
+ const merged = { ...DEFAULTS.data, ...configured };
59
+ const inputValue = cliOptions.input ?? merged.input;
60
+ const outputValue = cliOptions.output ?? merged.output;
61
+ const reconstructedValue = cliOptions.reconstructed ?? merged.reconstructed;
62
+ return {
63
+ inputFile: path.resolve(process.cwd(), inputValue),
64
+ outputDir: path.resolve(process.cwd(), outputValue),
65
+ reconstructedFile: path.resolve(process.cwd(), reconstructedValue),
66
+ limits: {
67
+ maxLinesPerFile: asNumber(merged.maxLinesPerFile, DEFAULTS.data.maxLinesPerFile),
68
+ maxStatementsPerFile: asNumber(merged.maxStatementsPerFile, DEFAULTS.data.maxStatementsPerFile),
69
+ maxRowsPerInsert: asNumber(merged.maxRowsPerInsert, DEFAULTS.data.maxRowsPerInsert),
70
+ },
71
+ tableRules: asTableRules(merged.tableRules),
72
+ keepFiles: asStringArray(merged.keepFiles),
73
+ ignoreInReconstruct: asStringArray(merged.ignoreInReconstruct),
74
+ };
75
+ }
76
+ export function resolveCommandConfig(commandName, cliOptions) {
77
+ const toolConfig = readToolConfig();
78
+ if (commandName === 'schema') {
79
+ return resolveSchemaConfig(toolConfig, cliOptions);
80
+ }
81
+ if (commandName === 'data') {
82
+ return resolveDataConfig(toolConfig, cliOptions);
83
+ }
84
+ throw new Error(`Unsupported config command: ${commandName}`);
85
+ }
86
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ export declare const DEFAULT_TOOL_CONFIG_PATH = "supabee.config.json";
2
+ export declare const LEGACY_TOOL_CONFIG_PATH = "supabase-splitter.config.json";
3
+ export type DataTableRule = {
4
+ maxLinesPerFile?: number;
5
+ maxStatementsPerFile?: number;
6
+ maxRowsPerInsert?: number;
7
+ skip?: boolean;
8
+ };
9
+ export type ToolConfig = {
10
+ schema?: {
11
+ input?: string;
12
+ output?: string;
13
+ reconstructed?: string;
14
+ keepFiles?: string[];
15
+ };
16
+ data?: {
17
+ input?: string;
18
+ output?: string;
19
+ reconstructed?: string;
20
+ maxLinesPerFile?: number;
21
+ maxStatementsPerFile?: number;
22
+ maxRowsPerInsert?: number;
23
+ tableRules?: Record<string, DataTableRule>;
24
+ keepFiles?: string[];
25
+ ignoreInReconstruct?: string[];
26
+ };
27
+ init?: {
28
+ seedSqlPaths?: string[];
29
+ };
30
+ };
31
+ export declare const DEFAULTS: {
32
+ schema: {
33
+ input: string;
34
+ output: string;
35
+ reconstructed: string;
36
+ keepFiles: never[];
37
+ };
38
+ data: {
39
+ input: string;
40
+ output: string;
41
+ reconstructed: string;
42
+ maxLinesPerFile: number;
43
+ maxStatementsPerFile: number;
44
+ maxRowsPerInsert: number;
45
+ tableRules: {};
46
+ keepFiles: never[];
47
+ ignoreInReconstruct: never[];
48
+ };
49
+ };
@@ -0,0 +1,22 @@
1
+ export const DEFAULT_TOOL_CONFIG_PATH = 'supabee.config.json';
2
+ export const LEGACY_TOOL_CONFIG_PATH = 'supabase-splitter.config.json';
3
+ export const DEFAULTS = {
4
+ schema: {
5
+ input: 'supabase/schemas/prod-schemas.sql',
6
+ output: 'supabase/schemas/split',
7
+ reconstructed: 'supabase/schemas/reconstructed-schemas.sql',
8
+ keepFiles: [],
9
+ },
10
+ data: {
11
+ input: 'supabase/seeds/prod-data.sql',
12
+ output: 'supabase/seeds/split',
13
+ reconstructed: 'supabase/seeds/reconstructed-data.sql',
14
+ maxLinesPerFile: 2000,
15
+ maxStatementsPerFile: 20,
16
+ maxRowsPerInsert: 200,
17
+ tableRules: {},
18
+ keepFiles: [],
19
+ ignoreInReconstruct: [],
20
+ },
21
+ };
22
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +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;AAgCvE,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,MAAM,EAAE;QACN,KAAK,EAAE,mCAAmC;QAC1C,MAAM,EAAE,wBAAwB;QAChC,aAAa,EAAE,4CAA4C;QAC3D,SAAS,EAAE,EAAE;KACd;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,8BAA8B;QACrC,MAAM,EAAE,sBAAsB;QAC9B,aAAa,EAAE,uCAAuC;QACtD,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,9 @@
1
+ export declare function prepareSplitOutputDir(outputDir: string, backup: boolean, label: string, options?: {
2
+ keepFiles?: string[];
3
+ }): Promise<{
4
+ backupPath: null;
5
+ restoredCount: number;
6
+ } | {
7
+ backupPath: string;
8
+ restoredCount: number;
9
+ }>;
@@ -0,0 +1,84 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { info } from './ui.js';
4
+ function timestampForPath() {
5
+ const now = new Date();
6
+ const pad = (n) => String(n).padStart(2, '0');
7
+ return `${now.getFullYear()}${pad(now.getMonth() + 1)}${pad(now.getDate())}_${pad(now.getHours())}${pad(now.getMinutes())}${pad(now.getSeconds())}`;
8
+ }
9
+ async function hasAnyFiles(dirPath) {
10
+ try {
11
+ const entries = await fs.promises.readdir(dirPath);
12
+ return entries.length > 0;
13
+ }
14
+ catch (error) {
15
+ const errno = error;
16
+ if (errno.code === 'ENOENT')
17
+ return false;
18
+ throw error;
19
+ }
20
+ }
21
+ function toRegexPattern(pattern) {
22
+ const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '.*');
23
+ return new RegExp(`^${escaped}$`);
24
+ }
25
+ function matchesKeepPattern(relativePath, pattern) {
26
+ const baseName = path.basename(relativePath);
27
+ if (pattern.includes('*')) {
28
+ const regex = toRegexPattern(pattern);
29
+ return regex.test(relativePath) || regex.test(baseName);
30
+ }
31
+ if (pattern.includes('/'))
32
+ return relativePath === pattern;
33
+ return baseName === pattern;
34
+ }
35
+ async function collectFiles(rootDir, currentDir = rootDir) {
36
+ const entries = await fs.promises.readdir(currentDir, { withFileTypes: true });
37
+ const files = [];
38
+ for (const entry of entries) {
39
+ const absolutePath = path.join(currentDir, entry.name);
40
+ if (entry.isDirectory()) {
41
+ files.push(...(await collectFiles(rootDir, absolutePath)));
42
+ continue;
43
+ }
44
+ if (entry.isFile())
45
+ files.push(path.relative(rootDir, absolutePath));
46
+ }
47
+ return files;
48
+ }
49
+ async function restoreKeepFiles({ outputDir, backupPath, keepFiles, label, }) {
50
+ if (!backupPath || !Array.isArray(keepFiles) || keepFiles.length === 0)
51
+ return 0;
52
+ const existingFiles = await collectFiles(backupPath);
53
+ const restoreTargets = existingFiles.filter((relativePath) => keepFiles.some((pattern) => matchesKeepPattern(relativePath, pattern)));
54
+ for (const relativePath of restoreTargets) {
55
+ const from = path.join(backupPath, relativePath);
56
+ const to = path.join(outputDir, relativePath);
57
+ await fs.promises.mkdir(path.dirname(to), { recursive: true });
58
+ await fs.promises.copyFile(from, to);
59
+ }
60
+ if (restoreTargets.length > 0) {
61
+ console.log(info(`Restored ${restoreTargets.length} kept file(s) for ${label.toLowerCase()} output.`));
62
+ }
63
+ return restoreTargets.length;
64
+ }
65
+ export async function prepareSplitOutputDir(outputDir, backup, label, options = {}) {
66
+ const { keepFiles = [] } = options;
67
+ const isDirty = await hasAnyFiles(outputDir);
68
+ if (!isDirty) {
69
+ await fs.promises.mkdir(outputDir, { recursive: true });
70
+ return { backupPath: null, restoredCount: 0 };
71
+ }
72
+ if (!backup) {
73
+ throw new Error(`${label} output directory is not empty: ${outputDir}.\nRe-run with --backup to preserve existing files.`);
74
+ }
75
+ const backupRoot = path.join(path.dirname(outputDir), 'backup');
76
+ const backupPath = path.join(backupRoot, `${path.basename(outputDir)}_${timestampForPath()}`);
77
+ await fs.promises.mkdir(backupRoot, { recursive: true });
78
+ await fs.promises.rename(outputDir, backupPath);
79
+ await fs.promises.mkdir(outputDir, { recursive: true });
80
+ console.log(info(`Backed up existing ${label.toLowerCase()} output to: ${backupPath}`));
81
+ const restoredCount = await restoreKeepFiles({ outputDir, backupPath, keepFiles, label });
82
+ return { backupPath, restoredCount };
83
+ }
84
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { type ResolvedStepPaths, type StepCommandOptions, type StepName } from './command-contract.js';
2
+ type ActionContext<TConfig> = {
3
+ config: TConfig;
4
+ options: StepCommandOptions;
5
+ defaults: TConfig;
6
+ subcommand: string | null;
7
+ };
8
+ type StepCommandDefinition<TConfig extends ResolvedStepPaths> = {
9
+ commandName: string;
10
+ commandDisplayName: string;
11
+ detailNote: ((step: StepName) => string) | string;
12
+ buildDefaults: (options?: StepCommandOptions) => TConfig;
13
+ buildStepConfig?: (params: {
14
+ step: StepName;
15
+ defaults: TConfig;
16
+ options: StepCommandOptions;
17
+ subcommand: string | null;
18
+ }) => TConfig;
19
+ getDetailLines: ((step: StepName, config: TConfig) => string[]) | string[];
20
+ actions: {
21
+ split: (context: ActionContext<TConfig>) => Promise<unknown>;
22
+ reconstruct: (context: ActionContext<TConfig>) => Promise<unknown>;
23
+ validate: (context: ActionContext<TConfig>) => Promise<boolean>;
24
+ };
25
+ };
26
+ export declare function runStepCommand<TConfig extends ResolvedStepPaths>(args: string[], definition: StepCommandDefinition<TConfig>): Promise<void>;
27
+ export {};