@edge-base/cli 0.1.1
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 +182 -0
- package/dist/commands/admin.d.ts +10 -0
- package/dist/commands/admin.d.ts.map +1 -0
- package/dist/commands/admin.js +307 -0
- package/dist/commands/admin.js.map +1 -0
- package/dist/commands/backup.d.ts +148 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +1247 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/completion.d.ts +3 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +168 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/create-plugin.d.ts +3 -0
- package/dist/commands/create-plugin.d.ts.map +1 -0
- package/dist/commands/create-plugin.js +208 -0
- package/dist/commands/create-plugin.js.map +1 -0
- package/dist/commands/deploy.d.ts +146 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +1823 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/describe.d.ts +45 -0
- package/dist/commands/describe.d.ts.map +1 -0
- package/dist/commands/describe.js +114 -0
- package/dist/commands/describe.js.map +1 -0
- package/dist/commands/destroy.d.ts +13 -0
- package/dist/commands/destroy.d.ts.map +1 -0
- package/dist/commands/destroy.js +642 -0
- package/dist/commands/destroy.js.map +1 -0
- package/dist/commands/dev.d.ts +80 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +1131 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/docker.d.ts +22 -0
- package/dist/commands/docker.d.ts.map +1 -0
- package/dist/commands/docker.js +373 -0
- package/dist/commands/docker.js.map +1 -0
- package/dist/commands/export.d.ts +15 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +142 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +506 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/keys.d.ts +23 -0
- package/dist/commands/keys.d.ts.map +1 -0
- package/dist/commands/keys.js +347 -0
- package/dist/commands/keys.js.map +1 -0
- package/dist/commands/logs.d.ts +17 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +104 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/migrate.d.ts +29 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +302 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/migration.d.ts +18 -0
- package/dist/commands/migration.d.ts.map +1 -0
- package/dist/commands/migration.js +114 -0
- package/dist/commands/migration.js.map +1 -0
- package/dist/commands/neon.d.ts +66 -0
- package/dist/commands/neon.d.ts.map +1 -0
- package/dist/commands/neon.js +600 -0
- package/dist/commands/neon.js.map +1 -0
- package/dist/commands/plugins.d.ts +9 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +295 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/realtime.d.ts +3 -0
- package/dist/commands/realtime.d.ts.map +1 -0
- package/dist/commands/realtime.js +71 -0
- package/dist/commands/realtime.js.map +1 -0
- package/dist/commands/secret.d.ts +7 -0
- package/dist/commands/secret.d.ts.map +1 -0
- package/dist/commands/secret.js +180 -0
- package/dist/commands/secret.js.map +1 -0
- package/dist/commands/seed.d.ts +21 -0
- package/dist/commands/seed.d.ts.map +1 -0
- package/dist/commands/seed.js +325 -0
- package/dist/commands/seed.js.map +1 -0
- package/dist/commands/telemetry.d.ts +12 -0
- package/dist/commands/telemetry.d.ts.map +1 -0
- package/dist/commands/telemetry.js +57 -0
- package/dist/commands/telemetry.js.map +1 -0
- package/dist/commands/typegen.d.ts +26 -0
- package/dist/commands/typegen.d.ts.map +1 -0
- package/dist/commands/typegen.js +212 -0
- package/dist/commands/typegen.js.map +1 -0
- package/dist/commands/upgrade.d.ts +29 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +265 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/webhook-test.d.ts +3 -0
- package/dist/commands/webhook-test.d.ts.map +1 -0
- package/dist/commands/webhook-test.js +133 -0
- package/dist/commands/webhook-test.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +183 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/agent-contract.d.ts +36 -0
- package/dist/lib/agent-contract.d.ts.map +1 -0
- package/dist/lib/agent-contract.js +78 -0
- package/dist/lib/agent-contract.js.map +1 -0
- package/dist/lib/cf-auth.d.ts +76 -0
- package/dist/lib/cf-auth.d.ts.map +1 -0
- package/dist/lib/cf-auth.js +321 -0
- package/dist/lib/cf-auth.js.map +1 -0
- package/dist/lib/cli-context.d.ts +23 -0
- package/dist/lib/cli-context.d.ts.map +1 -0
- package/dist/lib/cli-context.js +40 -0
- package/dist/lib/cli-context.js.map +1 -0
- package/dist/lib/cloudflare-deploy-manifest.d.ts +26 -0
- package/dist/lib/cloudflare-deploy-manifest.d.ts.map +1 -0
- package/dist/lib/cloudflare-deploy-manifest.js +107 -0
- package/dist/lib/cloudflare-deploy-manifest.js.map +1 -0
- package/dist/lib/cloudflare-wrangler-resources.d.ts +32 -0
- package/dist/lib/cloudflare-wrangler-resources.d.ts.map +1 -0
- package/dist/lib/cloudflare-wrangler-resources.js +59 -0
- package/dist/lib/cloudflare-wrangler-resources.js.map +1 -0
- package/dist/lib/config-editor.d.ts +139 -0
- package/dist/lib/config-editor.d.ts.map +1 -0
- package/dist/lib/config-editor.js +1188 -0
- package/dist/lib/config-editor.js.map +1 -0
- package/dist/lib/deploy-shared.d.ts +55 -0
- package/dist/lib/deploy-shared.d.ts.map +1 -0
- package/dist/lib/deploy-shared.js +183 -0
- package/dist/lib/deploy-shared.js.map +1 -0
- package/dist/lib/dev-sidecar.d.ts +31 -0
- package/dist/lib/dev-sidecar.d.ts.map +1 -0
- package/dist/lib/dev-sidecar.js +1058 -0
- package/dist/lib/dev-sidecar.js.map +1 -0
- package/dist/lib/fetch-with-timeout.d.ts +14 -0
- package/dist/lib/fetch-with-timeout.d.ts.map +1 -0
- package/dist/lib/fetch-with-timeout.js +29 -0
- package/dist/lib/fetch-with-timeout.js.map +1 -0
- package/dist/lib/function-registry.d.ts +56 -0
- package/dist/lib/function-registry.d.ts.map +1 -0
- package/dist/lib/function-registry.js +210 -0
- package/dist/lib/function-registry.js.map +1 -0
- package/dist/lib/load-config.d.ts +24 -0
- package/dist/lib/load-config.d.ts.map +1 -0
- package/dist/lib/load-config.js +263 -0
- package/dist/lib/load-config.js.map +1 -0
- package/dist/lib/local-secrets.d.ts +2 -0
- package/dist/lib/local-secrets.d.ts.map +1 -0
- package/dist/lib/local-secrets.js +60 -0
- package/dist/lib/local-secrets.js.map +1 -0
- package/dist/lib/managed-resource-names.d.ts +4 -0
- package/dist/lib/managed-resource-names.d.ts.map +1 -0
- package/dist/lib/managed-resource-names.js +19 -0
- package/dist/lib/managed-resource-names.js.map +1 -0
- package/dist/lib/migrator.d.ts +57 -0
- package/dist/lib/migrator.d.ts.map +1 -0
- package/dist/lib/migrator.js +321 -0
- package/dist/lib/migrator.js.map +1 -0
- package/dist/lib/neon.d.ts +41 -0
- package/dist/lib/neon.d.ts.map +1 -0
- package/dist/lib/neon.js +325 -0
- package/dist/lib/neon.js.map +1 -0
- package/dist/lib/node-tools.d.ts +10 -0
- package/dist/lib/node-tools.d.ts.map +1 -0
- package/dist/lib/node-tools.js +32 -0
- package/dist/lib/node-tools.js.map +1 -0
- package/dist/lib/npm.d.ts +8 -0
- package/dist/lib/npm.d.ts.map +1 -0
- package/dist/lib/npm.js +10 -0
- package/dist/lib/npm.js.map +1 -0
- package/dist/lib/npx.d.ts +9 -0
- package/dist/lib/npx.d.ts.map +1 -0
- package/dist/lib/npx.js +11 -0
- package/dist/lib/npx.js.map +1 -0
- package/dist/lib/project-runtime.d.ts +38 -0
- package/dist/lib/project-runtime.d.ts.map +1 -0
- package/dist/lib/project-runtime.js +122 -0
- package/dist/lib/project-runtime.js.map +1 -0
- package/dist/lib/prompts.d.ts +28 -0
- package/dist/lib/prompts.d.ts.map +1 -0
- package/dist/lib/prompts.js +85 -0
- package/dist/lib/prompts.js.map +1 -0
- package/dist/lib/rate-limit-bindings.d.ts +11 -0
- package/dist/lib/rate-limit-bindings.d.ts.map +1 -0
- package/dist/lib/rate-limit-bindings.js +52 -0
- package/dist/lib/rate-limit-bindings.js.map +1 -0
- package/dist/lib/realtime-provision.d.ts +22 -0
- package/dist/lib/realtime-provision.d.ts.map +1 -0
- package/dist/lib/realtime-provision.js +246 -0
- package/dist/lib/realtime-provision.js.map +1 -0
- package/dist/lib/resolve-options.d.ts +42 -0
- package/dist/lib/resolve-options.d.ts.map +1 -0
- package/dist/lib/resolve-options.js +98 -0
- package/dist/lib/resolve-options.js.map +1 -0
- package/dist/lib/runtime-scaffold.d.ts +17 -0
- package/dist/lib/runtime-scaffold.d.ts.map +1 -0
- package/dist/lib/runtime-scaffold.js +366 -0
- package/dist/lib/runtime-scaffold.js.map +1 -0
- package/dist/lib/schema-check.d.ts +79 -0
- package/dist/lib/schema-check.d.ts.map +1 -0
- package/dist/lib/schema-check.js +347 -0
- package/dist/lib/schema-check.js.map +1 -0
- package/dist/lib/spinner.d.ts +20 -0
- package/dist/lib/spinner.d.ts.map +1 -0
- package/dist/lib/spinner.js +42 -0
- package/dist/lib/spinner.js.map +1 -0
- package/dist/lib/telemetry.d.ts +37 -0
- package/dist/lib/telemetry.d.ts.map +1 -0
- package/dist/lib/telemetry.js +98 -0
- package/dist/lib/telemetry.js.map +1 -0
- package/dist/lib/turnstile-provision.d.ts +27 -0
- package/dist/lib/turnstile-provision.d.ts.map +1 -0
- package/dist/lib/turnstile-provision.js +144 -0
- package/dist/lib/turnstile-provision.js.map +1 -0
- package/dist/lib/update-check.d.ts +13 -0
- package/dist/lib/update-check.d.ts.map +1 -0
- package/dist/lib/update-check.js +110 -0
- package/dist/lib/update-check.js.map +1 -0
- package/dist/lib/wrangler-secrets.d.ts +3 -0
- package/dist/lib/wrangler-secrets.d.ts.map +1 -0
- package/dist/lib/wrangler-secrets.js +32 -0
- package/dist/lib/wrangler-secrets.js.map +1 -0
- package/dist/lib/wrangler.d.ts +9 -0
- package/dist/lib/wrangler.d.ts.map +1 -0
- package/dist/lib/wrangler.js +84 -0
- package/dist/lib/wrangler.js.map +1 -0
- package/dist/templates/plugin/README.md.tmpl +91 -0
- package/dist/templates/plugin/client/js/package.json.tmpl +23 -0
- package/dist/templates/plugin/client/js/src/index.ts.tmpl +68 -0
- package/dist/templates/plugin/client/js/tsconfig.json.tmpl +14 -0
- package/dist/templates/plugin/server/package.json.tmpl +19 -0
- package/dist/templates/plugin/server/src/index.ts.tmpl +59 -0
- package/dist/templates/plugin/server/tsconfig.json.tmpl +14 -0
- package/llms.txt +94 -0
- package/package.json +60 -0
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* migrate command — Data migration between providers.
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates automatic data migration when database provider changes
|
|
5
|
+
* (D1 ↔ PostgreSQL). Uses the Worker's Admin Backup API for dump/restore.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* npx edgebase migrate # Auto-detect changes from snapshot
|
|
9
|
+
* npx edgebase migrate --scope auth # Migrate auth tables only
|
|
10
|
+
* npx edgebase migrate --scope data # Migrate data namespaces only
|
|
11
|
+
* npx edgebase migrate --dry-run # Preview without executing
|
|
12
|
+
*/
|
|
13
|
+
import { Command } from 'commander';
|
|
14
|
+
import chalk from 'chalk';
|
|
15
|
+
import { resolve, join } from 'node:path';
|
|
16
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
17
|
+
import { loadConfigSafe } from '../lib/load-config.js';
|
|
18
|
+
import { buildSnapshot, loadSnapshot, saveSnapshot, detectProviderChanges, detectAuthProviderChange, } from '../lib/schema-check.js';
|
|
19
|
+
import { executeMigration, } from '../lib/migrator.js';
|
|
20
|
+
import { isCliStructuredError, raiseCliError, raiseNeedsInput } from '../lib/agent-contract.js';
|
|
21
|
+
import { isJson, isQuiet } from '../lib/cli-context.js';
|
|
22
|
+
import { resolveServiceKey } from '../lib/resolve-options.js';
|
|
23
|
+
import { _internals } from './deploy.js';
|
|
24
|
+
const { extractDatabases } = _internals;
|
|
25
|
+
const FULL_CONFIG_EVAL = { allowRegexFallback: false };
|
|
26
|
+
export function listConfigDataNamespaces(config) {
|
|
27
|
+
const databases = config ? extractDatabases(config) : null;
|
|
28
|
+
return databases ? Object.keys(databases) : [];
|
|
29
|
+
}
|
|
30
|
+
export function resolveMigrationTargets(input) {
|
|
31
|
+
if (input.namespace) {
|
|
32
|
+
if (input.scope === 'auth') {
|
|
33
|
+
throw new Error('`--namespace` cannot be used with `--scope auth`.');
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
scope: 'data',
|
|
37
|
+
namespaces: [input.namespace],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
if (input.scope === 'auth') {
|
|
41
|
+
return { scope: 'auth' };
|
|
42
|
+
}
|
|
43
|
+
if (input.configNamespaces.length > 0) {
|
|
44
|
+
return {
|
|
45
|
+
scope: input.scope,
|
|
46
|
+
namespaces: input.configNamespaces,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
if (input.configState === 'loaded') {
|
|
50
|
+
if (input.scope === 'all') {
|
|
51
|
+
return { scope: 'auth' };
|
|
52
|
+
}
|
|
53
|
+
throw new Error('No data namespaces found in edgebase.config.ts. Use `--scope auth` or `--namespace <name>`.');
|
|
54
|
+
}
|
|
55
|
+
throw new Error('Could not determine data namespaces. Pass `--namespace <name>` or run the command from your project root with a readable edgebase.config.ts.');
|
|
56
|
+
}
|
|
57
|
+
export const _migrateInternals = {
|
|
58
|
+
listConfigDataNamespaces,
|
|
59
|
+
resolveMigrationTargets,
|
|
60
|
+
};
|
|
61
|
+
export const migrateCommand = new Command('migrate')
|
|
62
|
+
.description('Migrate data between database providers')
|
|
63
|
+
.option('--scope <scope>', 'Scope: auth, data, or all (default: auto-detect)', undefined)
|
|
64
|
+
.option('--namespace <ns>', 'Specific data namespace to migrate')
|
|
65
|
+
.option('--dry-run', 'Show what would be migrated without executing')
|
|
66
|
+
.option('--url <url>', 'Server URL (default: EDGEBASE_URL)')
|
|
67
|
+
.option('--service-key <key>', 'Service Key (default: auto-resolve)')
|
|
68
|
+
.action(async (options) => {
|
|
69
|
+
const projectDir = resolve('.');
|
|
70
|
+
const configPath = join(projectDir, 'edgebase.config.ts');
|
|
71
|
+
const hasConfigFile = existsSync(configPath);
|
|
72
|
+
const warnings = [];
|
|
73
|
+
if (!isQuiet()) {
|
|
74
|
+
console.log(chalk.blue('EdgeBase Data Migration'));
|
|
75
|
+
console.log();
|
|
76
|
+
}
|
|
77
|
+
// ─── Resolve Server URL ───
|
|
78
|
+
let serverUrl = options.url ?? process.env.EDGEBASE_URL ?? '';
|
|
79
|
+
if (!serverUrl) {
|
|
80
|
+
// Try to derive from wrangler.toml
|
|
81
|
+
const wranglerFile = join(projectDir, 'wrangler.toml');
|
|
82
|
+
if (existsSync(wranglerFile)) {
|
|
83
|
+
const tomlContent = readFileSync(wranglerFile, 'utf-8');
|
|
84
|
+
const nameMatch = tomlContent.match(/^name\s*=\s*"([^"]+)"/m);
|
|
85
|
+
if (nameMatch)
|
|
86
|
+
serverUrl = `https://${nameMatch[1]}.workers.dev`;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (!serverUrl) {
|
|
90
|
+
raiseNeedsInput({
|
|
91
|
+
code: 'migration_url_required',
|
|
92
|
+
field: 'url',
|
|
93
|
+
message: 'A server URL is required before migration can continue.',
|
|
94
|
+
hint: 'Provide --url <worker-url>, set EDGEBASE_URL, or run from a project with a wrangler.toml name that can be inferred automatically.',
|
|
95
|
+
choices: [
|
|
96
|
+
{
|
|
97
|
+
label: 'Use local dev server',
|
|
98
|
+
value: 'local',
|
|
99
|
+
args: ['--url', 'http://localhost:8787'],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
label: 'Use deployed Worker URL',
|
|
103
|
+
value: 'workers-dev',
|
|
104
|
+
args: ['--url', 'https://<name>.workers.dev'],
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
serverUrl = serverUrl.replace(/\/$/, '');
|
|
110
|
+
// ─── Resolve Service Key ───
|
|
111
|
+
const serviceKey = resolveServiceKey({ serviceKey: options.serviceKey });
|
|
112
|
+
let configJson = null;
|
|
113
|
+
let configLoadError = null;
|
|
114
|
+
let configNamespaces = [];
|
|
115
|
+
if (hasConfigFile) {
|
|
116
|
+
try {
|
|
117
|
+
configJson = loadConfigSafe(configPath, projectDir, FULL_CONFIG_EVAL);
|
|
118
|
+
configNamespaces = listConfigDataNamespaces(configJson);
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
configLoadError = err;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// ─── Auto-detect Changes from Snapshot ───
|
|
125
|
+
let scope = options.scope ?? 'all';
|
|
126
|
+
let namespaces;
|
|
127
|
+
const detectedChanges = [];
|
|
128
|
+
if (!options.scope && configJson) {
|
|
129
|
+
try {
|
|
130
|
+
const databases = extractDatabases(configJson);
|
|
131
|
+
if (databases && Object.keys(databases).length > 0) {
|
|
132
|
+
const authProvider = configJson.auth?.provider;
|
|
133
|
+
const currentSnapshot = buildSnapshot(databases, authProvider);
|
|
134
|
+
const savedSnapshot = loadSnapshot(projectDir);
|
|
135
|
+
if (savedSnapshot) {
|
|
136
|
+
const providerChanges = detectProviderChanges(savedSnapshot, currentSnapshot);
|
|
137
|
+
const authChange = detectAuthProviderChange(savedSnapshot, currentSnapshot);
|
|
138
|
+
if (authChange)
|
|
139
|
+
detectedChanges.push(authChange);
|
|
140
|
+
detectedChanges.push(...providerChanges);
|
|
141
|
+
if (detectedChanges.length > 0) {
|
|
142
|
+
if (!isQuiet()) {
|
|
143
|
+
console.log(chalk.cyan(' Detected provider changes:'));
|
|
144
|
+
for (const pc of detectedChanges) {
|
|
145
|
+
const label = pc.namespace === '_auth' ? 'Auth' : pc.namespace;
|
|
146
|
+
console.log(chalk.cyan(` • ${label}: ${pc.oldProvider} → ${pc.newProvider}`));
|
|
147
|
+
}
|
|
148
|
+
console.log();
|
|
149
|
+
}
|
|
150
|
+
// Auto-determine scope
|
|
151
|
+
const hasAuth = detectedChanges.some(c => c.namespace === '_auth');
|
|
152
|
+
const dataChanges = detectedChanges.filter(c => c.namespace !== '_auth');
|
|
153
|
+
if (hasAuth && dataChanges.length > 0) {
|
|
154
|
+
scope = 'all';
|
|
155
|
+
namespaces = dataChanges.map(c => c.namespace);
|
|
156
|
+
}
|
|
157
|
+
else if (hasAuth) {
|
|
158
|
+
scope = 'auth';
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
scope = 'data';
|
|
162
|
+
namespaces = dataChanges.map(c => c.namespace);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
if (isJson()) {
|
|
167
|
+
console.log(JSON.stringify({
|
|
168
|
+
status: 'success',
|
|
169
|
+
changed: false,
|
|
170
|
+
scope: null,
|
|
171
|
+
namespaces: [],
|
|
172
|
+
warnings,
|
|
173
|
+
}));
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
console.log(chalk.green('✓'), 'No provider changes detected.');
|
|
177
|
+
console.log(chalk.dim(' Config matches the saved schema snapshot.'));
|
|
178
|
+
console.log();
|
|
179
|
+
console.log(chalk.dim(' To force migration, use --scope:'));
|
|
180
|
+
console.log(chalk.dim(' npx edgebase migrate --scope auth'));
|
|
181
|
+
console.log(chalk.dim(' npx edgebase migrate --scope data'));
|
|
182
|
+
console.log(chalk.dim(' npx edgebase migrate --scope all'));
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
configLoadError = err;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (!options.scope && configLoadError) {
|
|
193
|
+
warnings.push(`Skipping config auto-detection: ${configLoadError.message}`);
|
|
194
|
+
if (!isQuiet()) {
|
|
195
|
+
console.log(chalk.yellow('⚠'), `Skipping config auto-detection: ${configLoadError.message}`);
|
|
196
|
+
console.log(chalk.dim(' Use --scope/--namespace explicitly if config evaluation depends on unavailable local modules.'));
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (!namespaces) {
|
|
200
|
+
try {
|
|
201
|
+
const resolvedTargets = resolveMigrationTargets({
|
|
202
|
+
scope,
|
|
203
|
+
namespace: options.namespace,
|
|
204
|
+
configNamespaces,
|
|
205
|
+
configState: configJson ? 'loaded' : hasConfigFile ? 'failed' : 'missing',
|
|
206
|
+
});
|
|
207
|
+
scope = resolvedTargets.scope;
|
|
208
|
+
namespaces = resolvedTargets.namespaces;
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
raiseCliError({
|
|
212
|
+
code: 'migration_target_resolution_failed',
|
|
213
|
+
message: err.message,
|
|
214
|
+
hint: 'Provide --scope auth, --scope data, or --namespace <name> so the CLI knows what to migrate.',
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// ─── Display Migration Info ───
|
|
219
|
+
if (!isQuiet()) {
|
|
220
|
+
console.log(chalk.cyan(` Server: ${serverUrl}`));
|
|
221
|
+
console.log(chalk.cyan(` Scope: ${scope}`));
|
|
222
|
+
if (namespaces) {
|
|
223
|
+
console.log(chalk.cyan(` Namespaces: ${namespaces.join(', ')}`));
|
|
224
|
+
}
|
|
225
|
+
if (options.dryRun) {
|
|
226
|
+
console.log(chalk.cyan(` Mode: dry-run (preview only)`));
|
|
227
|
+
}
|
|
228
|
+
console.log();
|
|
229
|
+
}
|
|
230
|
+
// ─── Execute Migration ───
|
|
231
|
+
try {
|
|
232
|
+
const result = await executeMigration({
|
|
233
|
+
scope,
|
|
234
|
+
namespaces,
|
|
235
|
+
serverUrl,
|
|
236
|
+
serviceKey,
|
|
237
|
+
dryRun: !!options.dryRun,
|
|
238
|
+
});
|
|
239
|
+
let snapshotUpdated = false;
|
|
240
|
+
if (result.success) {
|
|
241
|
+
if (options.dryRun) {
|
|
242
|
+
if (!isQuiet()) {
|
|
243
|
+
console.log(chalk.dim(' Run without --dry-run to execute the migration.'));
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
// Update snapshot after successful migration
|
|
248
|
+
if (configJson ?? existsSync(configPath)) {
|
|
249
|
+
try {
|
|
250
|
+
const latestConfig = configJson ?? loadConfigSafe(configPath, projectDir, FULL_CONFIG_EVAL);
|
|
251
|
+
const databases = extractDatabases(latestConfig);
|
|
252
|
+
if (databases && Object.keys(databases).length > 0) {
|
|
253
|
+
const authProvider = latestConfig.auth?.provider;
|
|
254
|
+
const newSnapshot = buildSnapshot(databases, authProvider);
|
|
255
|
+
saveSnapshot(projectDir, newSnapshot);
|
|
256
|
+
snapshotUpdated = true;
|
|
257
|
+
if (!isQuiet()) {
|
|
258
|
+
console.log(chalk.dim(' Schema snapshot updated.'));
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
catch (err) {
|
|
263
|
+
warnings.push(`Schema snapshot not updated: ${err.message}`);
|
|
264
|
+
if (!isQuiet()) {
|
|
265
|
+
console.log(chalk.yellow('⚠'), `Schema snapshot not updated: ${err.message}`);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
if (isJson()) {
|
|
271
|
+
console.log(JSON.stringify({
|
|
272
|
+
status: 'success',
|
|
273
|
+
changed: detectedChanges.length > 0 || Boolean(options.scope),
|
|
274
|
+
scope,
|
|
275
|
+
namespaces: namespaces ?? [],
|
|
276
|
+
serverUrl,
|
|
277
|
+
dryRun: !!options.dryRun,
|
|
278
|
+
detectedChanges,
|
|
279
|
+
snapshotUpdated,
|
|
280
|
+
result,
|
|
281
|
+
warnings,
|
|
282
|
+
}));
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
catch (err) {
|
|
287
|
+
if (isCliStructuredError(err))
|
|
288
|
+
throw err;
|
|
289
|
+
raiseCliError({
|
|
290
|
+
code: 'migration_failed',
|
|
291
|
+
message: err.message,
|
|
292
|
+
hint: 'Ensure the server is running and accessible, verify the service key, and try with --dry-run first to preview.',
|
|
293
|
+
details: {
|
|
294
|
+
scope,
|
|
295
|
+
namespaces: namespaces ?? [],
|
|
296
|
+
serverUrl,
|
|
297
|
+
dryRun: !!options.dryRun,
|
|
298
|
+
},
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Extract the highest migration version for a given table
|
|
4
|
+
* by parsing edgebase.config.ts with regex.
|
|
5
|
+
*/
|
|
6
|
+
declare function getMaxMigrationVersion(configPath: string, tableName: string): number;
|
|
7
|
+
declare function resolveConfigPath(cwd: string): string | null;
|
|
8
|
+
/** Generate a migration skeleton snippet string. */
|
|
9
|
+
declare function generateMigrationSnippet(version: number, name: string, tableName?: string): string;
|
|
10
|
+
/** Exported for testing */
|
|
11
|
+
export declare const _internals: {
|
|
12
|
+
getMaxMigrationVersion: typeof getMaxMigrationVersion;
|
|
13
|
+
resolveConfigPath: typeof resolveConfigPath;
|
|
14
|
+
generateMigrationSnippet: typeof generateMigrationSnippet;
|
|
15
|
+
};
|
|
16
|
+
export declare const migrationCommand: Command;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../src/commands/migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;;GAGG;AACH,iBAAS,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAqB7E;AAED,iBAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMrD;AAGD,oDAAoD;AACpD,iBAAS,wBAAwB,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAYR;AAED,2BAA2B;AAC3B,eAAO,MAAM,UAAU;;;;CAA0E,CAAC;AAIlG,eAAO,MAAM,gBAAgB,SAEa,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import * as fs from 'node:fs';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import { raiseCliError } from '../lib/agent-contract.js';
|
|
6
|
+
import { isJson } from '../lib/cli-context.js';
|
|
7
|
+
// ─── Config parsing (lightweight) ───
|
|
8
|
+
/**
|
|
9
|
+
* Extract the highest migration version for a given table
|
|
10
|
+
* by parsing edgebase.config.ts with regex.
|
|
11
|
+
*/
|
|
12
|
+
function getMaxMigrationVersion(configPath, tableName) {
|
|
13
|
+
const content = fs.readFileSync(configPath, 'utf-8');
|
|
14
|
+
// Find the table block
|
|
15
|
+
const tableRegex = new RegExp(`${tableName}\\s*:\\s*\\{[\\s\\S]*?migrations\\s*:\\s*\\[([\\s\\S]*?)\\]`, 'm');
|
|
16
|
+
const match = tableRegex.exec(content);
|
|
17
|
+
if (!match)
|
|
18
|
+
return 0;
|
|
19
|
+
// Find all version numbers
|
|
20
|
+
const versionRegex = /version\s*:\s*(\d+)/g;
|
|
21
|
+
let maxVersion = 0;
|
|
22
|
+
let vMatch;
|
|
23
|
+
while ((vMatch = versionRegex.exec(match[1])) !== null) {
|
|
24
|
+
const v = parseInt(vMatch[1], 10);
|
|
25
|
+
if (v > maxVersion)
|
|
26
|
+
maxVersion = v;
|
|
27
|
+
}
|
|
28
|
+
return maxVersion;
|
|
29
|
+
}
|
|
30
|
+
function resolveConfigPath(cwd) {
|
|
31
|
+
for (const name of ['edgebase.config.ts', 'edgebase.config.js']) {
|
|
32
|
+
const p = path.join(cwd, name);
|
|
33
|
+
if (fs.existsSync(p))
|
|
34
|
+
return p;
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
/** Generate a migration skeleton snippet string. */
|
|
39
|
+
function generateMigrationSnippet(version, name, tableName) {
|
|
40
|
+
return `{
|
|
41
|
+
version: ${version},
|
|
42
|
+
description: '${name}',
|
|
43
|
+
up: \`
|
|
44
|
+
-- Write your SQL migration here
|
|
45
|
+
-- Supported DDL: ALTER TABLE, CREATE INDEX, DROP COLUMN (SQLite 3.35.0+)
|
|
46
|
+
-- RENAME COLUMN (SQLite 3.25.0+)
|
|
47
|
+
-- Example:
|
|
48
|
+
-- ALTER TABLE ${tableName ?? 'your_table'} ADD COLUMN newField TEXT DEFAULT '';
|
|
49
|
+
\`,
|
|
50
|
+
},`;
|
|
51
|
+
}
|
|
52
|
+
/** Exported for testing */
|
|
53
|
+
export const _internals = { getMaxMigrationVersion, resolveConfigPath, generateMigrationSnippet };
|
|
54
|
+
// ─── Command ───
|
|
55
|
+
export const migrationCommand = new Command('migration')
|
|
56
|
+
.alias('mg')
|
|
57
|
+
.description('Manage schema migrations');
|
|
58
|
+
migrationCommand
|
|
59
|
+
.command('create <name>')
|
|
60
|
+
.description('Generate a migration skeleton snippet')
|
|
61
|
+
.option('-c, --table <name>', 'Target table name')
|
|
62
|
+
.action((name, options) => {
|
|
63
|
+
const cwd = process.cwd();
|
|
64
|
+
const configPath = resolveConfigPath(cwd);
|
|
65
|
+
if (!configPath) {
|
|
66
|
+
raiseCliError({
|
|
67
|
+
code: 'migration_config_not_found',
|
|
68
|
+
message: 'edgebase.config.ts not found. Run this command from your EdgeBase project root.',
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
const tableName = options.table;
|
|
72
|
+
let nextVersion = 2;
|
|
73
|
+
if (tableName) {
|
|
74
|
+
const maxVersion = getMaxMigrationVersion(configPath, tableName);
|
|
75
|
+
nextVersion = maxVersion + 1;
|
|
76
|
+
console.log(`📋 Table "${tableName}" — current max version: ${maxVersion}`);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
console.log('📋 No table specified. Generating generic skeleton.');
|
|
80
|
+
console.log(' Use --table <name> for auto version numbering.');
|
|
81
|
+
}
|
|
82
|
+
// Generate migration snippet
|
|
83
|
+
const snippet = generateMigrationSnippet(nextVersion, name, tableName);
|
|
84
|
+
if (isJson()) {
|
|
85
|
+
console.log(JSON.stringify({
|
|
86
|
+
status: 'success',
|
|
87
|
+
version: nextVersion,
|
|
88
|
+
table: tableName ?? null,
|
|
89
|
+
snippet,
|
|
90
|
+
}));
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
console.log(`\n✅ Migration snippet (version ${nextVersion}):\n`);
|
|
94
|
+
console.log('Add this to your edgebase.config.ts → databases.shared.tables.' +
|
|
95
|
+
`${tableName ?? '<tableName>'} → migrations:\n`);
|
|
96
|
+
console.log('```typescript');
|
|
97
|
+
console.log(snippet);
|
|
98
|
+
console.log('```');
|
|
99
|
+
console.log('\n📝 Reminder: SQLite DDL support varies by version:');
|
|
100
|
+
console.log(' • RENAME COLUMN — SQLite 3.25.0+ (Cloudflare: ✅)');
|
|
101
|
+
console.log(' • DROP COLUMN — SQLite 3.35.0+ (Cloudflare: ✅)');
|
|
102
|
+
console.log(' • Recommended: Use 2-step migration for destructive changes');
|
|
103
|
+
console.log(' (ADD new → update code → DROP old)');
|
|
104
|
+
});
|
|
105
|
+
// migrate warm (not yet implemented — hidden from help)
|
|
106
|
+
migrationCommand
|
|
107
|
+
.command('warm', { hidden: true })
|
|
108
|
+
.description('Batch warming for Isolated DO migrations')
|
|
109
|
+
.action(() => {
|
|
110
|
+
console.log(chalk.yellow('⚠'), 'This feature is not yet implemented.');
|
|
111
|
+
console.log(' Each Durable Object applies migrations lazily on first request.');
|
|
112
|
+
console.log(' Batch warming will be available in a future release.');
|
|
113
|
+
});
|
|
114
|
+
//# 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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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
export interface NeonSetupTarget {
|
|
3
|
+
kind: 'auth' | 'database';
|
|
4
|
+
label: string;
|
|
5
|
+
envKey: string;
|
|
6
|
+
namespace?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface NeonProjectOption {
|
|
9
|
+
projectId: string;
|
|
10
|
+
projectName: string;
|
|
11
|
+
orgId: string;
|
|
12
|
+
orgName: string;
|
|
13
|
+
}
|
|
14
|
+
declare function normalizeProjectName(value: string): string;
|
|
15
|
+
declare function normalizePgIdentifier(value: string, fallback?: string): string;
|
|
16
|
+
export declare function listNeonSetupTargets(config?: Record<string, unknown> | null): NeonSetupTarget[];
|
|
17
|
+
export declare function resolveNeonSetupTarget(options: {
|
|
18
|
+
auth?: boolean;
|
|
19
|
+
namespace?: string;
|
|
20
|
+
}, config?: Record<string, unknown> | null): NeonSetupTarget | null;
|
|
21
|
+
export declare const _internals: {
|
|
22
|
+
listNeonSetupTargets: typeof listNeonSetupTargets;
|
|
23
|
+
normalizePgIdentifier: typeof normalizePgIdentifier;
|
|
24
|
+
normalizeProjectName: typeof normalizeProjectName;
|
|
25
|
+
resolveNeonSetupTarget: typeof resolveNeonSetupTarget;
|
|
26
|
+
};
|
|
27
|
+
export type NeonProjectMode = 'auto' | 'reuse' | 'create';
|
|
28
|
+
export interface RunNeonSetupOptions {
|
|
29
|
+
projectDir?: string;
|
|
30
|
+
auth?: boolean;
|
|
31
|
+
namespace?: string;
|
|
32
|
+
projectId?: string;
|
|
33
|
+
projectName?: string;
|
|
34
|
+
orgId?: string;
|
|
35
|
+
database?: string;
|
|
36
|
+
role?: string;
|
|
37
|
+
branch?: string;
|
|
38
|
+
apiKey?: string;
|
|
39
|
+
configDir?: string;
|
|
40
|
+
pooled?: boolean;
|
|
41
|
+
projectMode?: NeonProjectMode;
|
|
42
|
+
configJson?: Record<string, unknown> | null;
|
|
43
|
+
envKeyOverride?: string;
|
|
44
|
+
targetLabelOverride?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface RunNeonSetupResult {
|
|
47
|
+
target: NeonSetupTarget;
|
|
48
|
+
connectionString: string;
|
|
49
|
+
envDevPath: string;
|
|
50
|
+
envReleasePath: string;
|
|
51
|
+
projectId?: string;
|
|
52
|
+
projectName: string;
|
|
53
|
+
databaseName: string;
|
|
54
|
+
roleName: string;
|
|
55
|
+
branch?: string;
|
|
56
|
+
}
|
|
57
|
+
export declare function listAvailableNeonProjects(options?: {
|
|
58
|
+
projectDir?: string;
|
|
59
|
+
apiKey?: string;
|
|
60
|
+
configDir?: string;
|
|
61
|
+
orgId?: string;
|
|
62
|
+
}): Promise<NeonProjectOption[]>;
|
|
63
|
+
export declare function runNeonSetup(options: RunNeonSetupOptions): Promise<RunNeonSetupResult>;
|
|
64
|
+
export declare const neonCommand: Command;
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=neon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"neon.d.ts","sourceRoot":"","sources":["../../src/commands/neon.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqCpC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,iBAAS,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOnD;AAED,iBAAS,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAgB,GAAG,MAAM,CAQ9E;AAkBD,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,eAAe,EAAE,CAY/F;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACtC,eAAe,GAAG,IAAI,CAuCxB;AAED,eAAO,MAAM,UAAU;;;;;CAKtB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,eAAe,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA6VD,wBAAsB,yBAAyB,CAAC,OAAO,GAAE;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CACX,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAuBpC;AA4CD,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA8I5F;AAED,eAAO,MAAM,WAAW,SACsB,CAAC"}
|