gazill 2.1.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/autoscale.d.ts +5 -0
- package/dist/commands/autoscale.d.ts.map +1 -0
- package/dist/commands/autoscale.js +140 -0
- package/dist/commands/autoscale.js.map +1 -0
- package/dist/commands/blob.d.ts +19 -0
- package/dist/commands/blob.d.ts.map +1 -0
- package/dist/commands/blob.js +383 -0
- package/dist/commands/blob.js.map +1 -0
- package/dist/commands/cron.d.ts +27 -0
- package/dist/commands/cron.d.ts.map +1 -0
- package/dist/commands/cron.js +333 -0
- package/dist/commands/cron.js.map +1 -0
- package/dist/commands/db.d.ts +21 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +567 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/domains.d.ts +5 -0
- package/dist/commands/domains.d.ts.map +1 -0
- package/dist/commands/domains.js +239 -0
- package/dist/commands/domains.js.map +1 -0
- package/dist/commands/env.d.ts +4 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +180 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/health.d.ts +7 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +189 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/limits.d.ts +2 -0
- package/dist/commands/limits.d.ts.map +1 -0
- package/dist/commands/limits.js +186 -0
- package/dist/commands/limits.js.map +1 -0
- package/dist/commands/mysql.d.ts +15 -0
- package/dist/commands/mysql.d.ts.map +1 -0
- package/dist/commands/mysql.js +413 -0
- package/dist/commands/mysql.js.map +1 -0
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +29 -3
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/promote.d.ts.map +1 -1
- package/dist/commands/promote.js +36 -9
- package/dist/commands/promote.js.map +1 -1
- package/dist/commands/redis.d.ts +15 -0
- package/dist/commands/redis.d.ts.map +1 -0
- package/dist/commands/redis.js +402 -0
- package/dist/commands/redis.js.map +1 -0
- package/dist/commands/rollback.d.ts +9 -0
- package/dist/commands/rollback.d.ts.map +1 -0
- package/dist/commands/rollback.js +154 -0
- package/dist/commands/rollback.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +24 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/usage.d.ts.map +1 -1
- package/dist/commands/usage.js +20 -11
- package/dist/commands/usage.js.map +1 -1
- package/dist/commands/worker.d.ts +31 -0
- package/dist/commands/worker.d.ts.map +1 -0
- package/dist/commands/worker.js +380 -0
- package/dist/commands/worker.js.map +1 -0
- package/dist/index.js +362 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +46 -2
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +16 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/shared/constants.d.ts +10 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +11 -0
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/types.d.ts +40 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../src/commands/mysql.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AA2CA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgH5D;AAGD,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAmClD"}
|
package/dist/commands/new.js
CHANGED
|
@@ -2,8 +2,8 @@ import { promises as fs } from 'fs';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import ora from 'ora';
|
|
5
|
-
import { projectNameSchema, DEV_DOMAIN } from '../shared/index.js';
|
|
6
|
-
import { createProject } from '../lib/api.js';
|
|
5
|
+
import { projectNameSchema, DEV_DOMAIN, MAX_PROJECTS_PER_USER, DEV_MAX_CONCURRENT_VISITORS, DEV_MAX_UNIQUE_VISITORS, } from '../shared/index.js';
|
|
6
|
+
import { createProject, listProjects } from '../lib/api.js';
|
|
7
7
|
import { isAuthenticated } from '../lib/config.js';
|
|
8
8
|
import { startWatcher } from '../lib/watcher.js';
|
|
9
9
|
// Starter files for a basic Node.js project
|
|
@@ -56,6 +56,21 @@ export async function newCommand(name) {
|
|
|
56
56
|
catch {
|
|
57
57
|
// Directory doesn't exist, good to proceed
|
|
58
58
|
}
|
|
59
|
+
// Check project count before creating
|
|
60
|
+
const checkSpinner = ora('Checking project limit...').start();
|
|
61
|
+
try {
|
|
62
|
+
const { projects } = await listProjects();
|
|
63
|
+
checkSpinner.stop();
|
|
64
|
+
if (projects.length >= MAX_PROJECTS_PER_USER) {
|
|
65
|
+
console.log(chalk.red(`Maximum of ${MAX_PROJECTS_PER_USER} development projects.`));
|
|
66
|
+
console.log(chalk.gray('Delete unused projects or promote to production.'));
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
checkSpinner.stop();
|
|
72
|
+
// Continue anyway - API will enforce the limit
|
|
73
|
+
}
|
|
59
74
|
// Create project via API
|
|
60
75
|
const spinner = ora('Creating project...').start();
|
|
61
76
|
try {
|
|
@@ -78,7 +93,18 @@ export async function newCommand(name) {
|
|
|
78
93
|
console.log('');
|
|
79
94
|
console.log(chalk.blue('Project:'), name);
|
|
80
95
|
console.log(chalk.blue('Dev URL:'), chalk.underline(devUrl));
|
|
81
|
-
console.log(
|
|
96
|
+
console.log('');
|
|
97
|
+
console.log(chalk.gray('Development Limits:'));
|
|
98
|
+
console.log(chalk.gray(` ${DEV_MAX_CONCURRENT_VISITORS} concurrent visitors`));
|
|
99
|
+
console.log(chalk.gray(` ${DEV_MAX_UNIQUE_VISITORS} unique visitors (lifetime)`));
|
|
100
|
+
console.log(chalk.gray(' 2GB bandwidth/month'));
|
|
101
|
+
console.log(chalk.gray(' 100MB SQLite storage'));
|
|
102
|
+
console.log(chalk.gray(' Sleeps after 30min inactive'));
|
|
103
|
+
console.log('');
|
|
104
|
+
console.log(chalk.blue('SQLite:'), 'Use /data/db.sqlite or $DATABASE_URL');
|
|
105
|
+
console.log(chalk.gray(' Data persists across deploys and sleep/wake cycles.'));
|
|
106
|
+
console.log('');
|
|
107
|
+
console.log(chalk.gray('To remove limits: gazill promote'));
|
|
82
108
|
console.log('');
|
|
83
109
|
console.log(chalk.gray('Starting file watcher...'));
|
|
84
110
|
console.log('');
|
package/dist/commands/new.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../../src/commands/promote.ts"],"names":[],"mappings":"AAOA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../../src/commands/promote.ts"],"names":[],"mappings":"AAOA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAqFpD"}
|
package/dist/commands/promote.js
CHANGED
|
@@ -2,7 +2,7 @@ import { promises as fs } from 'fs';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import ora from 'ora';
|
|
5
|
-
import { promoteProject } from '../lib/api.js';
|
|
5
|
+
import { promoteProject, getPaymentMethod, getUsage } from '../lib/api.js';
|
|
6
6
|
import { isAuthenticated } from '../lib/config.js';
|
|
7
7
|
export async function promoteCommand() {
|
|
8
8
|
// Check authentication
|
|
@@ -24,32 +24,59 @@ export async function promoteCommand() {
|
|
|
24
24
|
console.log(chalk.gray('Run this command from a Gazill project directory.'));
|
|
25
25
|
process.exit(1);
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
// Check if user has a payment method
|
|
28
|
+
const checkingSpinner = ora('Checking billing status...').start();
|
|
28
29
|
try {
|
|
30
|
+
const paymentMethod = await getPaymentMethod();
|
|
31
|
+
if (!paymentMethod.hasPaymentMethod) {
|
|
32
|
+
checkingSpinner.stop();
|
|
33
|
+
console.log(chalk.yellow('💳 Production requires a payment method'));
|
|
34
|
+
console.log('');
|
|
35
|
+
console.log("You'll get 500 hours free (~3 weeks hosting)");
|
|
36
|
+
console.log('After that: ~$7/month for most apps');
|
|
37
|
+
console.log('');
|
|
38
|
+
console.log(chalk.blue('Add payment method:'), chalk.underline('https://dashboard.gazill.io'));
|
|
39
|
+
console.log(chalk.gray("(You won't be charged during the trial)"));
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
checkingSpinner.text = 'Promoting to production...';
|
|
29
43
|
const { prodUrl } = await promoteProject(projectConfig.id);
|
|
30
|
-
|
|
44
|
+
// Get current usage to show trial status
|
|
45
|
+
const usage = await getUsage();
|
|
46
|
+
const freeHoursRemaining = usage.freeCredit.remaining;
|
|
47
|
+
checkingSpinner.succeed(chalk.green('Promoted to production!'));
|
|
31
48
|
console.log('');
|
|
32
49
|
console.log(chalk.blue('Project:'), projectConfig.name);
|
|
33
50
|
console.log(chalk.blue('Production URL:'), chalk.underline(prodUrl));
|
|
51
|
+
if (freeHoursRemaining > 0) {
|
|
52
|
+
console.log(chalk.green(`Trial: ${freeHoursRemaining} hours remaining`));
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
console.log(chalk.yellow('Trial complete - billing active'));
|
|
56
|
+
}
|
|
57
|
+
console.log('');
|
|
58
|
+
console.log(chalk.yellow('Note:'), 'Production has its own SQLite storage.');
|
|
59
|
+
console.log(chalk.gray(' Dev data at /data does NOT carry over to production.'));
|
|
60
|
+
console.log(chalk.gray(' Production backups run daily (7-day retention).'));
|
|
34
61
|
console.log('');
|
|
35
62
|
}
|
|
36
63
|
catch (error) {
|
|
37
64
|
const message = error instanceof Error ? error.message : 'Failed to promote project';
|
|
38
65
|
// Handle specific error cases
|
|
39
|
-
if (message.includes('402') || message.includes('
|
|
40
|
-
|
|
66
|
+
if (message.includes('402') || message.includes('Free credit exhausted')) {
|
|
67
|
+
checkingSpinner.fail(chalk.red('Payment method required'));
|
|
41
68
|
console.log('');
|
|
42
|
-
console.log(chalk.yellow('
|
|
43
|
-
console.log(chalk.
|
|
69
|
+
console.log(chalk.yellow('Free credit exhausted. Add a payment method to continue.'));
|
|
70
|
+
console.log(chalk.blue('Add payment method:'), chalk.underline('https://dashboard.gazill.io'));
|
|
44
71
|
}
|
|
45
72
|
else if (message.includes('400') || message.includes('development first')) {
|
|
46
|
-
|
|
73
|
+
checkingSpinner.fail(chalk.red('Project not deployed'));
|
|
47
74
|
console.log('');
|
|
48
75
|
console.log(chalk.yellow('Deploy to development first before promoting to production.'));
|
|
49
76
|
console.log(chalk.gray('Make a change and save a file to trigger a dev deployment.'));
|
|
50
77
|
}
|
|
51
78
|
else {
|
|
52
|
-
|
|
79
|
+
checkingSpinner.fail(chalk.red(message));
|
|
53
80
|
}
|
|
54
81
|
process.exit(1);
|
|
55
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promote.js","sourceRoot":"","sources":["../../src/commands/promote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"promote.js","sourceRoot":"","sources":["../../src/commands/promote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,uBAAuB;IACvB,IAAI,CAAC,CAAC,MAAM,eAAe,EAAE,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAE3E,oCAAoC;IACpC,IAAI,aAA2C,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACpE,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAiC,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,qCAAqC;IACrC,MAAM,eAAe,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAE/C,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;YACpC,eAAe,CAAC,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC,CAAC;YAC/F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,eAAe,CAAC,IAAI,GAAG,4BAA4B,CAAC;QAEpD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAE3D,yCAAyC;QACzC,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC/B,MAAM,kBAAkB,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;QAEtD,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAEhE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAErE,IAAI,kBAAkB,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,kBAAkB,kBAAkB,CAAC,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,wCAAwC,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC;QAErF,8BAA8B;QAC9B,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACzE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0DAA0D,CAAC,CAAC,CAAC;YACtF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACjG,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC5E,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6DAA6D,CAAC,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACN,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare function redisCreateCommand(name?: string, options?: {
|
|
2
|
+
size?: string;
|
|
3
|
+
project?: string;
|
|
4
|
+
}): Promise<void>;
|
|
5
|
+
export declare function redisListCommand(project?: string): Promise<void>;
|
|
6
|
+
export declare function redisConnectCommand(name?: string, options?: {
|
|
7
|
+
project?: string;
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
export declare function redisDeleteCommand(name?: string, options?: {
|
|
10
|
+
project?: string;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
export declare function redisResizeCommand(size: string, name?: string, options?: {
|
|
13
|
+
project?: string;
|
|
14
|
+
}): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=redis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/commands/redis.ts"],"names":[],"mappings":"AA2EA,wBAAsB,kBAAkB,CACtC,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C,OAAO,CAAC,IAAI,CAAC,CAgFf;AAGD,wBAAsB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDtE;AAGD,wBAAsB,mBAAmB,CACvC,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAgGf;AAGD,wBAAsB,kBAAkB,CACtC,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAoFf;AAGD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAgFf"}
|
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import { promises as fs } from 'fs';
|
|
5
|
+
import { getAuth, getApiUrl } from '../lib/config.js';
|
|
6
|
+
import { listProjects } from '../lib/api.js';
|
|
7
|
+
async function redisApiRequest(endpoint, options = { method: 'GET' }) {
|
|
8
|
+
const apiUrl = await getApiUrl();
|
|
9
|
+
const auth = await getAuth();
|
|
10
|
+
if (!auth?.token) {
|
|
11
|
+
throw new Error('Not authenticated');
|
|
12
|
+
}
|
|
13
|
+
const response = await fetch(`${apiUrl}${endpoint}`, {
|
|
14
|
+
method: options.method,
|
|
15
|
+
headers: {
|
|
16
|
+
'Content-Type': 'application/json',
|
|
17
|
+
Authorization: `Bearer ${auth.token}`,
|
|
18
|
+
},
|
|
19
|
+
body: options.body ? JSON.stringify(options.body) : undefined,
|
|
20
|
+
});
|
|
21
|
+
const data = await response.json();
|
|
22
|
+
if (!response.ok) {
|
|
23
|
+
throw new Error(data.message || 'Request failed');
|
|
24
|
+
}
|
|
25
|
+
return data;
|
|
26
|
+
}
|
|
27
|
+
async function getProjectId() {
|
|
28
|
+
try {
|
|
29
|
+
const content = await fs.readFile('.gazill', 'utf-8');
|
|
30
|
+
const data = JSON.parse(content);
|
|
31
|
+
return data.projectId || null;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async function findProjectByName(name) {
|
|
38
|
+
const response = await listProjects();
|
|
39
|
+
return response.projects.find((p) => p.name === name) || null;
|
|
40
|
+
}
|
|
41
|
+
// gazill redis create [name] - Create a Redis instance
|
|
42
|
+
export async function redisCreateCommand(name, options) {
|
|
43
|
+
const auth = await getAuth();
|
|
44
|
+
if (!auth?.token) {
|
|
45
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
let projectId = null;
|
|
49
|
+
if (options?.project) {
|
|
50
|
+
const project = await findProjectByName(options.project);
|
|
51
|
+
if (!project) {
|
|
52
|
+
console.log(chalk.red(`Project "${options.project}" not found.`));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
projectId = project.id;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
projectId = await getProjectId();
|
|
59
|
+
}
|
|
60
|
+
if (!projectId) {
|
|
61
|
+
console.log(chalk.red('No project found. Run from a project directory or use --project.'));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
let redisName = name;
|
|
65
|
+
let size = options?.size || 'small';
|
|
66
|
+
if (!redisName) {
|
|
67
|
+
const answers = await inquirer.prompt([
|
|
68
|
+
{
|
|
69
|
+
type: 'input',
|
|
70
|
+
name: 'name',
|
|
71
|
+
message: 'Redis instance name:',
|
|
72
|
+
default: 'cache',
|
|
73
|
+
validate: (input) => {
|
|
74
|
+
if (!input.match(/^[a-z][a-z0-9-]*$/)) {
|
|
75
|
+
return 'Name must start with a letter and contain only lowercase letters, numbers, and hyphens';
|
|
76
|
+
}
|
|
77
|
+
return true;
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'list',
|
|
82
|
+
name: 'size',
|
|
83
|
+
message: 'Redis size:',
|
|
84
|
+
choices: [
|
|
85
|
+
{ name: 'small - 128MB RAM, 100MB max memory', value: 'small' },
|
|
86
|
+
{ name: 'medium - 256MB RAM, 200MB max memory', value: 'medium' },
|
|
87
|
+
{ name: 'large - 512MB RAM, 450MB max memory', value: 'large' },
|
|
88
|
+
{ name: 'xl - 1GB RAM, 900MB max memory', value: 'xl' },
|
|
89
|
+
],
|
|
90
|
+
default: 'small',
|
|
91
|
+
},
|
|
92
|
+
]);
|
|
93
|
+
redisName = answers.name;
|
|
94
|
+
size = answers.size;
|
|
95
|
+
}
|
|
96
|
+
const spinner = ora('Creating Redis instance...').start();
|
|
97
|
+
try {
|
|
98
|
+
const response = await redisApiRequest(`/api/projects/${projectId}/redis`, { method: 'POST', body: { name: redisName, size } });
|
|
99
|
+
spinner.succeed('Redis instance created');
|
|
100
|
+
console.log();
|
|
101
|
+
console.log(chalk.bold(' Redis Details:'));
|
|
102
|
+
console.log(chalk.gray(' Name:'), response.redis.name);
|
|
103
|
+
console.log(chalk.gray(' Size:'), response.redis.size);
|
|
104
|
+
console.log(chalk.gray(' Status:'), chalk.green(response.redis.status));
|
|
105
|
+
console.log(chalk.gray(' Max Memory:'), `${response.redis.maxMemoryMb}MB`);
|
|
106
|
+
console.log();
|
|
107
|
+
console.log(chalk.gray(' Run `gazill redis connect` to get connection details.'));
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
spinner.fail('Failed to create Redis instance');
|
|
111
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// gazill redis list [project] - List Redis instances
|
|
115
|
+
export async function redisListCommand(project) {
|
|
116
|
+
const auth = await getAuth();
|
|
117
|
+
if (!auth?.token) {
|
|
118
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
let projectId = null;
|
|
122
|
+
if (project) {
|
|
123
|
+
const proj = await findProjectByName(project);
|
|
124
|
+
if (!proj) {
|
|
125
|
+
console.log(chalk.red(`Project "${project}" not found.`));
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
projectId = proj.id;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
projectId = await getProjectId();
|
|
132
|
+
}
|
|
133
|
+
if (!projectId) {
|
|
134
|
+
console.log(chalk.red('No project found. Run from a project directory or specify a project.'));
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const spinner = ora('Fetching Redis instances...').start();
|
|
138
|
+
try {
|
|
139
|
+
const response = await redisApiRequest(`/api/projects/${projectId}/redis`);
|
|
140
|
+
spinner.stop();
|
|
141
|
+
if (response.instances.length === 0) {
|
|
142
|
+
console.log(chalk.yellow('No Redis instances found.'));
|
|
143
|
+
console.log(chalk.gray('Create one with `gazill redis create`'));
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
console.log();
|
|
147
|
+
console.log(chalk.bold('Redis Instances:'));
|
|
148
|
+
console.log();
|
|
149
|
+
for (const r of response.instances) {
|
|
150
|
+
const statusColor = r.status === 'running' ? chalk.green : chalk.yellow;
|
|
151
|
+
console.log(` ${chalk.cyan(r.name)} ${chalk.gray(`(${r.size})`)}`);
|
|
152
|
+
console.log(chalk.gray(` Status: `) + statusColor(r.status));
|
|
153
|
+
console.log(chalk.gray(` Port: ${r.port}`));
|
|
154
|
+
console.log(chalk.gray(` Max Memory: ${r.maxMemoryMb}MB`));
|
|
155
|
+
console.log();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
spinner.fail('Failed to fetch Redis instances');
|
|
160
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// gazill redis connect [name] - Get connection info
|
|
164
|
+
export async function redisConnectCommand(name, options) {
|
|
165
|
+
const auth = await getAuth();
|
|
166
|
+
if (!auth?.token) {
|
|
167
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
let projectId = null;
|
|
171
|
+
if (options?.project) {
|
|
172
|
+
const project = await findProjectByName(options.project);
|
|
173
|
+
if (!project) {
|
|
174
|
+
console.log(chalk.red(`Project "${options.project}" not found.`));
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
projectId = project.id;
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
projectId = await getProjectId();
|
|
181
|
+
}
|
|
182
|
+
if (!projectId) {
|
|
183
|
+
console.log(chalk.red('No project found. Run from a project directory or use --project.'));
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const spinner = ora('Fetching connection details...').start();
|
|
187
|
+
try {
|
|
188
|
+
// Get list of instances
|
|
189
|
+
const listResponse = await redisApiRequest(`/api/projects/${projectId}/redis`);
|
|
190
|
+
if (listResponse.instances.length === 0) {
|
|
191
|
+
spinner.stop();
|
|
192
|
+
console.log(chalk.yellow('No Redis instances found.'));
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
// Find the instance
|
|
196
|
+
let instance;
|
|
197
|
+
if (name) {
|
|
198
|
+
instance = listResponse.instances.find((r) => r.name === name);
|
|
199
|
+
if (!instance) {
|
|
200
|
+
spinner.stop();
|
|
201
|
+
console.log(chalk.red(`Redis instance "${name}" not found.`));
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
else if (listResponse.instances.length === 1) {
|
|
206
|
+
instance = listResponse.instances[0];
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
spinner.stop();
|
|
210
|
+
const answers = await inquirer.prompt([
|
|
211
|
+
{
|
|
212
|
+
type: 'list',
|
|
213
|
+
name: 'instance',
|
|
214
|
+
message: 'Select Redis instance:',
|
|
215
|
+
choices: listResponse.instances.map((r) => ({
|
|
216
|
+
name: `${r.name} (${r.size})`,
|
|
217
|
+
value: r.id,
|
|
218
|
+
})),
|
|
219
|
+
},
|
|
220
|
+
]);
|
|
221
|
+
instance = listResponse.instances.find((r) => r.id === answers.instance);
|
|
222
|
+
spinner.start('Fetching connection details...');
|
|
223
|
+
}
|
|
224
|
+
if (!instance)
|
|
225
|
+
return;
|
|
226
|
+
// Get connection details
|
|
227
|
+
const response = await redisApiRequest(`/api/projects/${projectId}/redis/${instance.id}`);
|
|
228
|
+
spinner.stop();
|
|
229
|
+
console.log();
|
|
230
|
+
console.log(chalk.bold(`Redis Instance: ${response.redis.name}`));
|
|
231
|
+
console.log();
|
|
232
|
+
console.log(chalk.bold(' Connection Details:'));
|
|
233
|
+
console.log(chalk.gray(' Host:'), response.connection.host);
|
|
234
|
+
console.log(chalk.gray(' Port:'), response.connection.port);
|
|
235
|
+
console.log(chalk.gray(' Password:'), response.connection.password);
|
|
236
|
+
console.log();
|
|
237
|
+
console.log(chalk.bold(' Connection URL:'));
|
|
238
|
+
console.log(chalk.cyan(` ${response.connection.url}`));
|
|
239
|
+
console.log();
|
|
240
|
+
console.log(chalk.bold(' Redis CLI:'));
|
|
241
|
+
console.log(chalk.gray(` ${response.connection.redisCliCommand}`));
|
|
242
|
+
console.log();
|
|
243
|
+
console.log(chalk.gray(' Note: Set REDIS_URL in your app to connect from your code.'));
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
spinner.fail('Failed to fetch connection details');
|
|
247
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
// gazill redis delete [name] - Delete a Redis instance
|
|
251
|
+
export async function redisDeleteCommand(name, options) {
|
|
252
|
+
const auth = await getAuth();
|
|
253
|
+
if (!auth?.token) {
|
|
254
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
let projectId = null;
|
|
258
|
+
if (options?.project) {
|
|
259
|
+
const project = await findProjectByName(options.project);
|
|
260
|
+
if (!project) {
|
|
261
|
+
console.log(chalk.red(`Project "${options.project}" not found.`));
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
projectId = project.id;
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
projectId = await getProjectId();
|
|
268
|
+
}
|
|
269
|
+
if (!projectId) {
|
|
270
|
+
console.log(chalk.red('No project found. Run from a project directory or use --project.'));
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
// Get list of instances
|
|
274
|
+
const listResponse = await redisApiRequest(`/api/projects/${projectId}/redis`);
|
|
275
|
+
if (listResponse.instances.length === 0) {
|
|
276
|
+
console.log(chalk.yellow('No Redis instances found.'));
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
// Find or select the instance
|
|
280
|
+
let instance;
|
|
281
|
+
if (name) {
|
|
282
|
+
instance = listResponse.instances.find((r) => r.name === name);
|
|
283
|
+
if (!instance) {
|
|
284
|
+
console.log(chalk.red(`Redis instance "${name}" not found.`));
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
const answers = await inquirer.prompt([
|
|
290
|
+
{
|
|
291
|
+
type: 'list',
|
|
292
|
+
name: 'instance',
|
|
293
|
+
message: 'Select Redis instance to delete:',
|
|
294
|
+
choices: listResponse.instances.map((r) => ({
|
|
295
|
+
name: `${r.name} (${r.size})`,
|
|
296
|
+
value: r.id,
|
|
297
|
+
})),
|
|
298
|
+
},
|
|
299
|
+
]);
|
|
300
|
+
instance = listResponse.instances.find((r) => r.id === answers.instance);
|
|
301
|
+
}
|
|
302
|
+
if (!instance)
|
|
303
|
+
return;
|
|
304
|
+
// Confirm deletion
|
|
305
|
+
const confirm = await inquirer.prompt([
|
|
306
|
+
{
|
|
307
|
+
type: 'confirm',
|
|
308
|
+
name: 'confirm',
|
|
309
|
+
message: `Are you sure you want to delete "${instance.name}"? This cannot be undone.`,
|
|
310
|
+
default: false,
|
|
311
|
+
},
|
|
312
|
+
]);
|
|
313
|
+
if (!confirm.confirm) {
|
|
314
|
+
console.log(chalk.yellow('Cancelled.'));
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
const spinner = ora('Deleting Redis instance...').start();
|
|
318
|
+
try {
|
|
319
|
+
await redisApiRequest(`/api/projects/${projectId}/redis/${instance.id}`, { method: 'DELETE' });
|
|
320
|
+
spinner.succeed('Redis instance deleted');
|
|
321
|
+
}
|
|
322
|
+
catch (error) {
|
|
323
|
+
spinner.fail('Failed to delete Redis instance');
|
|
324
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
// gazill redis resize <size> [name] - Resize a Redis instance
|
|
328
|
+
export async function redisResizeCommand(size, name, options) {
|
|
329
|
+
const auth = await getAuth();
|
|
330
|
+
if (!auth?.token) {
|
|
331
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
const validSizes = ['small', 'medium', 'large', 'xl'];
|
|
335
|
+
if (!validSizes.includes(size)) {
|
|
336
|
+
console.log(chalk.red(`Invalid size. Must be one of: ${validSizes.join(', ')}`));
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
let projectId = null;
|
|
340
|
+
if (options?.project) {
|
|
341
|
+
const project = await findProjectByName(options.project);
|
|
342
|
+
if (!project) {
|
|
343
|
+
console.log(chalk.red(`Project "${options.project}" not found.`));
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
projectId = project.id;
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
projectId = await getProjectId();
|
|
350
|
+
}
|
|
351
|
+
if (!projectId) {
|
|
352
|
+
console.log(chalk.red('No project found. Run from a project directory or use --project.'));
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
// Get list of instances
|
|
356
|
+
const listResponse = await redisApiRequest(`/api/projects/${projectId}/redis`);
|
|
357
|
+
if (listResponse.instances.length === 0) {
|
|
358
|
+
console.log(chalk.yellow('No Redis instances found.'));
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
// Find or select the instance
|
|
362
|
+
let instance;
|
|
363
|
+
if (name) {
|
|
364
|
+
instance = listResponse.instances.find((r) => r.name === name);
|
|
365
|
+
if (!instance) {
|
|
366
|
+
console.log(chalk.red(`Redis instance "${name}" not found.`));
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
else if (listResponse.instances.length === 1) {
|
|
371
|
+
instance = listResponse.instances[0];
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
const answers = await inquirer.prompt([
|
|
375
|
+
{
|
|
376
|
+
type: 'list',
|
|
377
|
+
name: 'instance',
|
|
378
|
+
message: 'Select Redis instance to resize:',
|
|
379
|
+
choices: listResponse.instances.map((r) => ({
|
|
380
|
+
name: `${r.name} (${r.size})`,
|
|
381
|
+
value: r.id,
|
|
382
|
+
})),
|
|
383
|
+
},
|
|
384
|
+
]);
|
|
385
|
+
instance = listResponse.instances.find((r) => r.id === answers.instance);
|
|
386
|
+
}
|
|
387
|
+
if (!instance)
|
|
388
|
+
return;
|
|
389
|
+
const spinner = ora(`Resizing Redis instance to ${size}...`).start();
|
|
390
|
+
try {
|
|
391
|
+
await redisApiRequest(`/api/projects/${projectId}/redis/${instance.id}/resize`, {
|
|
392
|
+
method: 'PATCH',
|
|
393
|
+
body: { size },
|
|
394
|
+
});
|
|
395
|
+
spinner.succeed(`Redis instance resized to ${size}`);
|
|
396
|
+
}
|
|
397
|
+
catch (error) {
|
|
398
|
+
spinner.fail('Failed to resize Redis instance');
|
|
399
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
//# sourceMappingURL=redis.js.map
|