gazill 1.0.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.
Files changed (47) hide show
  1. package/dist/commands/login.d.ts +2 -0
  2. package/dist/commands/login.d.ts.map +1 -0
  3. package/dist/commands/login.js +74 -0
  4. package/dist/commands/login.js.map +1 -0
  5. package/dist/commands/logout.d.ts +2 -0
  6. package/dist/commands/logout.d.ts.map +1 -0
  7. package/dist/commands/logout.js +13 -0
  8. package/dist/commands/logout.js.map +1 -0
  9. package/dist/commands/logs.d.ts +2 -0
  10. package/dist/commands/logs.d.ts.map +1 -0
  11. package/dist/commands/logs.js +74 -0
  12. package/dist/commands/logs.js.map +1 -0
  13. package/dist/commands/new.d.ts +3 -0
  14. package/dist/commands/new.d.ts.map +1 -0
  15. package/dist/commands/new.js +126 -0
  16. package/dist/commands/new.js.map +1 -0
  17. package/dist/commands/status.d.ts +2 -0
  18. package/dist/commands/status.d.ts.map +1 -0
  19. package/dist/commands/status.js +51 -0
  20. package/dist/commands/status.js.map +1 -0
  21. package/dist/index.d.ts +3 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +39 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/lib/api.d.ts +13 -0
  26. package/dist/lib/api.d.ts.map +1 -0
  27. package/dist/lib/api.js +75 -0
  28. package/dist/lib/api.js.map +1 -0
  29. package/dist/lib/config.d.ts +9 -0
  30. package/dist/lib/config.d.ts.map +1 -0
  31. package/dist/lib/config.js +70 -0
  32. package/dist/lib/config.js.map +1 -0
  33. package/dist/lib/watcher.d.ts +11 -0
  34. package/dist/lib/watcher.d.ts.map +1 -0
  35. package/dist/lib/watcher.js +154 -0
  36. package/dist/lib/watcher.js.map +1 -0
  37. package/package.json +35 -0
  38. package/src/commands/login.ts +90 -0
  39. package/src/commands/logout.ts +15 -0
  40. package/src/commands/logs.ts +90 -0
  41. package/src/commands/new.ts +162 -0
  42. package/src/commands/status.ts +70 -0
  43. package/src/index.ts +48 -0
  44. package/src/lib/api.ts +104 -0
  45. package/src/lib/config.ts +75 -0
  46. package/src/lib/watcher.ts +181 -0
  47. package/tsconfig.json +8 -0
@@ -0,0 +1,2 @@
1
+ export declare function loginCommand(): Promise<void>;
2
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAMA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAmFlD"}
@@ -0,0 +1,74 @@
1
+ import inquirer from 'inquirer';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import { signin, signup } from '../lib/api.js';
5
+ import { saveAuth, isAuthenticated, getAuth } from '../lib/config.js';
6
+ export async function loginCommand() {
7
+ // Check if already authenticated
8
+ if (await isAuthenticated()) {
9
+ const auth = await getAuth();
10
+ console.log(chalk.yellow(`Already logged in as ${auth?.email}`));
11
+ console.log(chalk.gray('Run "gazill logout" to switch accounts.'));
12
+ return;
13
+ }
14
+ // Ask for action
15
+ const { action } = await inquirer.prompt([
16
+ {
17
+ type: 'list',
18
+ name: 'action',
19
+ message: 'What would you like to do?',
20
+ choices: [
21
+ { name: 'Sign in to existing account', value: 'signin' },
22
+ { name: 'Create a new account', value: 'signup' },
23
+ ],
24
+ },
25
+ ]);
26
+ // Get credentials
27
+ const { email, password } = await inquirer.prompt([
28
+ {
29
+ type: 'input',
30
+ name: 'email',
31
+ message: 'Email:',
32
+ validate: (input) => {
33
+ if (!input || !input.includes('@')) {
34
+ return 'Please enter a valid email address';
35
+ }
36
+ return true;
37
+ },
38
+ },
39
+ {
40
+ type: 'password',
41
+ name: 'password',
42
+ message: 'Password:',
43
+ mask: '*',
44
+ validate: (input) => {
45
+ if (!input || input.length < 8) {
46
+ return 'Password must be at least 8 characters';
47
+ }
48
+ return true;
49
+ },
50
+ },
51
+ ]);
52
+ const spinner = ora(action === 'signup' ? 'Creating account...' : 'Signing in...').start();
53
+ try {
54
+ const response = action === 'signup'
55
+ ? await signup(email, password)
56
+ : await signin(email, password);
57
+ // Save auth token
58
+ await saveAuth({
59
+ token: response.token,
60
+ email: response.user.email,
61
+ });
62
+ spinner.succeed(chalk.green(action === 'signup'
63
+ ? 'Account created successfully!'
64
+ : 'Signed in successfully!'));
65
+ console.log(chalk.blue(`\nWelcome, ${response.user.email}!`));
66
+ console.log(chalk.gray('Run "gazill new <project-name>" to create a project.'));
67
+ }
68
+ catch (error) {
69
+ const message = error instanceof Error ? error.message : 'Authentication failed';
70
+ spinner.fail(chalk.red(message));
71
+ process.exit(1);
72
+ }
73
+ }
74
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEtE,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,iCAAiC;IACjC,IAAI,MAAM,eAAe,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,iBAAiB;IACjB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAkC;QACxE;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,4BAA4B;YACrC,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,QAAQ,EAAE;gBACxD,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,QAAQ,EAAE;aAClD;SACF;KACF,CAAC,CAAC;IAEH,kBAAkB;IAClB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAG9C;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnC,OAAO,oCAAoC,CAAC;gBAC9C,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF;QACD;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,WAAW;YACpB,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,OAAO,wCAAwC,CAAC;gBAClD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF;KACF,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,GAAG,CACjB,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,eAAe,CAC9D,CAAC,KAAK,EAAE,CAAC;IAEV,IAAI,CAAC;QACH,MAAM,QAAQ,GACZ,MAAM,KAAK,QAAQ;YACjB,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC;YAC/B,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAEpC,kBAAkB;QAClB,MAAM,QAAQ,CAAC;YACb,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;SAC3B,CAAC,CAAC;QAEH,OAAO,CAAC,OAAO,CACb,KAAK,CAAC,KAAK,CACT,MAAM,KAAK,QAAQ;YACjB,CAAC,CAAC,+BAA+B;YACjC,CAAC,CAAC,yBAAyB,CAC9B,CACF,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;IAClF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function logoutCommand(): Promise<void>;
2
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAGA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAWnD"}
@@ -0,0 +1,13 @@
1
+ import chalk from 'chalk';
2
+ import { clearAuth, isAuthenticated, getAuth } from '../lib/config.js';
3
+ export async function logoutCommand() {
4
+ if (!(await isAuthenticated())) {
5
+ console.log(chalk.yellow('You are not logged in.'));
6
+ return;
7
+ }
8
+ const auth = await getAuth();
9
+ await clearAuth();
10
+ console.log(chalk.green(`Logged out successfully.`));
11
+ console.log(chalk.gray(`Goodbye, ${auth?.email}!`));
12
+ }
13
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC,CAAC,MAAM,eAAe,EAAE,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;IAC7B,MAAM,SAAS,EAAE,CAAC;IAElB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function logsCommand(nameOrId?: string): Promise<void>;
2
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAOA,wBAAsB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkFlE"}
@@ -0,0 +1,74 @@
1
+ import { promises as fs } from 'fs';
2
+ import path from 'path';
3
+ import chalk from 'chalk';
4
+ import ora from 'ora';
5
+ import { listProjects, getLogs } from '../lib/api.js';
6
+ import { isAuthenticated } from '../lib/config.js';
7
+ export async function logsCommand(nameOrId) {
8
+ // Check authentication
9
+ if (!(await isAuthenticated())) {
10
+ console.log(chalk.red('Please log in first.'));
11
+ console.log(chalk.gray('Run "gazill login" to authenticate.'));
12
+ process.exit(1);
13
+ }
14
+ let projectId;
15
+ let projectName;
16
+ // If no name provided, try to get from current directory
17
+ if (!nameOrId) {
18
+ const projectConfigPath = path.join(process.cwd(), '.gazill', 'project.json');
19
+ try {
20
+ const configContent = await fs.readFile(projectConfigPath, 'utf-8');
21
+ const projectConfig = JSON.parse(configContent);
22
+ projectId = projectConfig.id;
23
+ projectName = projectConfig.name;
24
+ }
25
+ catch {
26
+ console.log(chalk.red('No project specified.'));
27
+ console.log(chalk.gray('Run "gazill logs <project-name>" or run from a project directory.'));
28
+ process.exit(1);
29
+ }
30
+ }
31
+ else {
32
+ // Find project by name or ID
33
+ const spinner = ora('Finding project...').start();
34
+ try {
35
+ const { projects } = await listProjects();
36
+ const project = projects.find((p) => p.name === nameOrId || p.id === nameOrId);
37
+ if (!project) {
38
+ spinner.fail(chalk.red(`Project "${nameOrId}" not found.`));
39
+ process.exit(1);
40
+ }
41
+ projectId = project.id;
42
+ projectName = project.name;
43
+ spinner.stop();
44
+ }
45
+ catch (error) {
46
+ const message = error instanceof Error ? error.message : 'Failed to find project';
47
+ spinner.fail(chalk.red(message));
48
+ process.exit(1);
49
+ }
50
+ }
51
+ // Fetch logs
52
+ const spinner = ora(`Fetching logs for ${projectName}...`).start();
53
+ try {
54
+ const { logs } = await getLogs(projectId, 100);
55
+ spinner.stop();
56
+ if (logs.length === 0) {
57
+ console.log(chalk.yellow('No logs available.'));
58
+ console.log(chalk.gray('The container may not have started yet or has no output.'));
59
+ return;
60
+ }
61
+ console.log(chalk.bold(`\nLogs for ${projectName}:\n`));
62
+ console.log(chalk.gray('-'.repeat(60)));
63
+ for (const entry of logs) {
64
+ console.log(entry.message);
65
+ }
66
+ console.log(chalk.gray('-'.repeat(60)));
67
+ }
68
+ catch (error) {
69
+ const message = error instanceof Error ? error.message : 'Failed to fetch logs';
70
+ spinner.fail(chalk.red(message));
71
+ process.exit(1);
72
+ }
73
+ }
74
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function newCommand(name: string): Promise<void>;
2
+ export declare function watchCommand(): Promise<void>;
3
+ //# sourceMappingURL=new.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAqCA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqF5D;AAGD,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAoClD"}
@@ -0,0 +1,126 @@
1
+ import { promises as fs } from 'fs';
2
+ import path from 'path';
3
+ import chalk from 'chalk';
4
+ import ora from 'ora';
5
+ import { projectNameSchema, BASE_DOMAIN } from '@gazill/shared';
6
+ import { createProject } from '../lib/api.js';
7
+ import { isAuthenticated } from '../lib/config.js';
8
+ import { startWatcher } from '../lib/watcher.js';
9
+ // Starter files for a basic Node.js project
10
+ const STARTER_FILES = {
11
+ 'package.json': JSON.stringify({
12
+ name: '{{PROJECT_NAME}}',
13
+ version: '1.0.0',
14
+ scripts: {
15
+ start: 'node index.js',
16
+ },
17
+ }, null, 2),
18
+ 'index.js': `const http = require('http');
19
+
20
+ const port = process.env.PORT || 3000;
21
+
22
+ const server = http.createServer((req, res) => {
23
+ res.writeHead(200, { 'Content-Type': 'text/html' });
24
+ res.end('<h1>Hello from Gazill!</h1><p>Edit index.js and save to see changes.</p>');
25
+ });
26
+
27
+ server.listen(port, () => {
28
+ console.log(\`Server running on port \${port}\`);
29
+ });
30
+ `,
31
+ };
32
+ export async function newCommand(name) {
33
+ // Check authentication
34
+ if (!(await isAuthenticated())) {
35
+ console.log(chalk.red('Please log in first.'));
36
+ console.log(chalk.gray('Run "gazill login" to authenticate.'));
37
+ process.exit(1);
38
+ }
39
+ // Validate project name
40
+ try {
41
+ projectNameSchema.parse(name);
42
+ }
43
+ catch {
44
+ console.log(chalk.red('Invalid project name.'));
45
+ console.log(chalk.gray('Project names must be 3-63 characters, lowercase alphanumeric with hyphens.'));
46
+ console.log(chalk.gray('Example: my-awesome-app'));
47
+ process.exit(1);
48
+ }
49
+ // Check if directory already exists
50
+ const projectDir = path.resolve(process.cwd(), name);
51
+ try {
52
+ await fs.access(projectDir);
53
+ console.log(chalk.red(`Directory "${name}" already exists.`));
54
+ process.exit(1);
55
+ }
56
+ catch {
57
+ // Directory doesn't exist, good to proceed
58
+ }
59
+ // Create project via API
60
+ const spinner = ora('Creating project...').start();
61
+ try {
62
+ const { project, url } = await createProject(name);
63
+ // Create local directory
64
+ await fs.mkdir(projectDir, { recursive: true });
65
+ // Create starter files
66
+ for (const [filename, content] of Object.entries(STARTER_FILES)) {
67
+ const fileContent = content.replace('{{PROJECT_NAME}}', name);
68
+ await fs.writeFile(path.join(projectDir, filename), fileContent, 'utf-8');
69
+ }
70
+ // Create .gazill directory with project config
71
+ const gazillDir = path.join(projectDir, '.gazill');
72
+ await fs.mkdir(gazillDir, { recursive: true });
73
+ await fs.writeFile(path.join(gazillDir, 'project.json'), JSON.stringify({
74
+ id: project.id,
75
+ name: project.name,
76
+ subdomain: project.subdomain,
77
+ }, null, 2), 'utf-8');
78
+ spinner.succeed(chalk.green('Project created!'));
79
+ console.log('');
80
+ console.log(chalk.blue('Project:'), name);
81
+ console.log(chalk.blue('URL:'), chalk.underline(url));
82
+ console.log('');
83
+ console.log(chalk.gray('Starting file watcher...'));
84
+ console.log('');
85
+ // Change to project directory and start watcher
86
+ process.chdir(projectDir);
87
+ await startWatcher({
88
+ projectId: project.id,
89
+ projectDir,
90
+ });
91
+ }
92
+ catch (error) {
93
+ const message = error instanceof Error ? error.message : 'Failed to create project';
94
+ spinner.fail(chalk.red(message));
95
+ process.exit(1);
96
+ }
97
+ }
98
+ // Watch an existing project
99
+ export async function watchCommand() {
100
+ // Check authentication
101
+ if (!(await isAuthenticated())) {
102
+ console.log(chalk.red('Please log in first.'));
103
+ console.log(chalk.gray('Run "gazill login" to authenticate.'));
104
+ process.exit(1);
105
+ }
106
+ const projectDir = process.cwd();
107
+ const projectConfigPath = path.join(projectDir, '.gazill', 'project.json');
108
+ // Check if this is a Gazill project
109
+ try {
110
+ const configContent = await fs.readFile(projectConfigPath, 'utf-8');
111
+ const projectConfig = JSON.parse(configContent);
112
+ console.log(chalk.blue('Project:'), projectConfig.name);
113
+ console.log(chalk.blue('URL:'), chalk.underline(`https://${projectConfig.subdomain}.${BASE_DOMAIN}`));
114
+ console.log('');
115
+ await startWatcher({
116
+ projectId: projectConfig.id,
117
+ projectDir,
118
+ });
119
+ }
120
+ catch {
121
+ console.log(chalk.red('Not a Gazill project.'));
122
+ console.log(chalk.gray('Run "gazill new <name>" to create a new project.'));
123
+ process.exit(1);
124
+ }
125
+ }
126
+ //# sourceMappingURL=new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function statusCommand(): Promise<void>;
2
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAcA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAuDnD"}
@@ -0,0 +1,51 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { BASE_DOMAIN } from '@gazill/shared';
4
+ import { listProjects } from '../lib/api.js';
5
+ import { isAuthenticated } from '../lib/config.js';
6
+ const STATUS_COLORS = {
7
+ pending: chalk.yellow,
8
+ building: chalk.blue,
9
+ running: chalk.green,
10
+ stopped: chalk.gray,
11
+ error: chalk.red,
12
+ };
13
+ export async function statusCommand() {
14
+ // Check authentication
15
+ if (!(await isAuthenticated())) {
16
+ console.log(chalk.red('Please log in first.'));
17
+ console.log(chalk.gray('Run "gazill login" to authenticate.'));
18
+ process.exit(1);
19
+ }
20
+ const spinner = ora('Fetching projects...').start();
21
+ try {
22
+ const { projects } = await listProjects();
23
+ if (projects.length === 0) {
24
+ spinner.info('No projects found.');
25
+ console.log(chalk.gray('\nRun "gazill new <name>" to create a project.'));
26
+ return;
27
+ }
28
+ spinner.stop();
29
+ console.log(chalk.bold('\nYour Projects:\n'));
30
+ // Calculate column widths
31
+ const nameWidth = Math.max(...projects.map((p) => p.name.length), 4);
32
+ const statusWidth = 8;
33
+ const urlWidth = Math.max(...projects.map((p) => `${p.subdomain}.${BASE_DOMAIN}`.length), 3);
34
+ // Header
35
+ console.log(chalk.gray(`${'NAME'.padEnd(nameWidth)} ${'STATUS'.padEnd(statusWidth)} ${'URL'.padEnd(urlWidth)}`));
36
+ console.log(chalk.gray('-'.repeat(nameWidth + statusWidth + urlWidth + 4)));
37
+ // Projects
38
+ for (const project of projects) {
39
+ const colorFn = STATUS_COLORS[project.status] || chalk.white;
40
+ const url = `${project.subdomain}.${BASE_DOMAIN}`;
41
+ console.log(`${project.name.padEnd(nameWidth)} ${colorFn(project.status.padEnd(statusWidth))} ${chalk.underline(url)}`);
42
+ }
43
+ console.log('');
44
+ }
45
+ catch (error) {
46
+ const message = error instanceof Error ? error.message : 'Failed to fetch projects';
47
+ spinner.fail(chalk.red(message));
48
+ process.exit(1);
49
+ }
50
+ }
51
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { loginCommand } from './commands/login.js';
4
+ import { logoutCommand } from './commands/logout.js';
5
+ import { newCommand, watchCommand } from './commands/new.js';
6
+ import { statusCommand } from './commands/status.js';
7
+ import { logsCommand } from './commands/logs.js';
8
+ const program = new Command();
9
+ program
10
+ .name('gazill')
11
+ .description('Auto-deploy platform for developers')
12
+ .version('1.0.0');
13
+ program
14
+ .command('login')
15
+ .description('Authenticate with Gazill')
16
+ .action(loginCommand);
17
+ program
18
+ .command('logout')
19
+ .description('Log out from Gazill')
20
+ .action(logoutCommand);
21
+ program
22
+ .command('new <name>')
23
+ .description('Create a new project and start watching for changes')
24
+ .action(newCommand);
25
+ program
26
+ .command('watch')
27
+ .description('Watch the current project for changes')
28
+ .action(watchCommand);
29
+ program
30
+ .command('status')
31
+ .alias('ls')
32
+ .description('List all your projects')
33
+ .action(statusCommand);
34
+ program
35
+ .command('logs [name]')
36
+ .description('View logs for a project')
37
+ .action(logsCommand);
38
+ program.parse();
39
+ //# 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,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,qCAAqC,CAAC;KAClD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,qBAAqB,CAAC;KAClC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { AuthResponse, CreateProjectResponse, ProjectListResponse, DeployResponse, LogsResponse, DeployFile } from '@gazill/shared';
2
+ export declare function signup(email: string, password: string): Promise<AuthResponse>;
3
+ export declare function signin(email: string, password: string): Promise<AuthResponse>;
4
+ export declare function createProject(name: string): Promise<CreateProjectResponse>;
5
+ export declare function listProjects(): Promise<ProjectListResponse>;
6
+ export declare function getProject(id: string): Promise<{
7
+ project: CreateProjectResponse['project'];
8
+ url: string;
9
+ }>;
10
+ export declare function deleteProject(id: string): Promise<void>;
11
+ export declare function deploy(projectId: string, files: DeployFile[]): Promise<DeployResponse>;
12
+ export declare function getLogs(projectId: string, lines?: number): Promise<LogsResponse>;
13
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,YAAY,EAEZ,UAAU,EACX,MAAM,gBAAgB,CAAC;AAyCxB,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAMnF;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAMnF;AAGD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAKhF;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAIjE;AAED,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAIhH;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7D;AAGD,wBAAsB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAK5F;AAED,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAI3F"}
@@ -0,0 +1,75 @@
1
+ import { getApiUrl, getAuth } from './config.js';
2
+ async function request(endpoint, options) {
3
+ const apiUrl = await getApiUrl();
4
+ const url = `${apiUrl}${endpoint}`;
5
+ const headers = {
6
+ 'Content-Type': 'application/json',
7
+ };
8
+ if (options.auth !== false) {
9
+ const auth = await getAuth();
10
+ if (auth?.token) {
11
+ headers['Authorization'] = `Bearer ${auth.token}`;
12
+ }
13
+ }
14
+ const response = await fetch(url, {
15
+ method: options.method,
16
+ headers,
17
+ body: options.body ? JSON.stringify(options.body) : undefined,
18
+ });
19
+ const data = await response.json();
20
+ if (!response.ok) {
21
+ const error = data;
22
+ throw new Error(error.message || 'Request failed');
23
+ }
24
+ return data;
25
+ }
26
+ // Auth API
27
+ export async function signup(email, password) {
28
+ return request('/api/auth/signup', {
29
+ method: 'POST',
30
+ body: { email, password },
31
+ auth: false,
32
+ });
33
+ }
34
+ export async function signin(email, password) {
35
+ return request('/api/auth/signin', {
36
+ method: 'POST',
37
+ body: { email, password },
38
+ auth: false,
39
+ });
40
+ }
41
+ // Projects API
42
+ export async function createProject(name) {
43
+ return request('/api/projects', {
44
+ method: 'POST',
45
+ body: { name },
46
+ });
47
+ }
48
+ export async function listProjects() {
49
+ return request('/api/projects', {
50
+ method: 'GET',
51
+ });
52
+ }
53
+ export async function getProject(id) {
54
+ return request('/api/projects/' + id, {
55
+ method: 'GET',
56
+ });
57
+ }
58
+ export async function deleteProject(id) {
59
+ await request('/api/projects/' + id, {
60
+ method: 'DELETE',
61
+ });
62
+ }
63
+ // Deployments API
64
+ export async function deploy(projectId, files) {
65
+ return request(`/api/projects/${projectId}/deploy`, {
66
+ method: 'POST',
67
+ body: { files },
68
+ });
69
+ }
70
+ export async function getLogs(projectId, lines = 100) {
71
+ return request(`/api/projects/${projectId}/logs?lines=${lines}`, {
72
+ method: 'GET',
73
+ });
74
+ }
75
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { CliConfig, CliAuth } from '@gazill/shared';
2
+ export declare function getConfig(): Promise<CliConfig>;
3
+ export declare function saveConfig(config: CliConfig): Promise<void>;
4
+ export declare function getAuth(): Promise<CliAuth | null>;
5
+ export declare function saveAuth(auth: CliAuth): Promise<void>;
6
+ export declare function clearAuth(): Promise<void>;
7
+ export declare function isAuthenticated(): Promise<boolean>;
8
+ export declare function getApiUrl(): Promise<string>;
9
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAiBzD,wBAAsB,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,CASpD;AAGD,wBAAsB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;AAGD,wBAAsB,OAAO,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAOvD;AAGD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3D;AAGD,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAM/C;AAGD,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAGxD;AAGD,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAGjD"}