dispatch-deploy 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 (114) hide show
  1. package/README.md +86 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +148 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/check.d.ts +15 -0
  7. package/dist/commands/check.d.ts.map +1 -0
  8. package/dist/commands/check.js +107 -0
  9. package/dist/commands/check.js.map +1 -0
  10. package/dist/commands/delete.d.ts +6 -0
  11. package/dist/commands/delete.d.ts.map +1 -0
  12. package/dist/commands/delete.js +107 -0
  13. package/dist/commands/delete.js.map +1 -0
  14. package/dist/commands/deploy.d.ts +9 -0
  15. package/dist/commands/deploy.d.ts.map +1 -0
  16. package/dist/commands/deploy.js +275 -0
  17. package/dist/commands/deploy.js.map +1 -0
  18. package/dist/commands/login.d.ts +4 -0
  19. package/dist/commands/login.d.ts.map +1 -0
  20. package/dist/commands/login.js +34 -0
  21. package/dist/commands/login.js.map +1 -0
  22. package/dist/commands/logout.d.ts +2 -0
  23. package/dist/commands/logout.d.ts.map +1 -0
  24. package/dist/commands/logout.js +15 -0
  25. package/dist/commands/logout.js.map +1 -0
  26. package/dist/commands/logs.d.ts +6 -0
  27. package/dist/commands/logs.d.ts.map +1 -0
  28. package/dist/commands/logs.js +129 -0
  29. package/dist/commands/logs.js.map +1 -0
  30. package/dist/commands/poll.d.ts +10 -0
  31. package/dist/commands/poll.d.ts.map +1 -0
  32. package/dist/commands/poll.js +72 -0
  33. package/dist/commands/poll.js.map +1 -0
  34. package/dist/commands/projects.d.ts +5 -0
  35. package/dist/commands/projects.d.ts.map +1 -0
  36. package/dist/commands/projects.js +49 -0
  37. package/dist/commands/projects.js.map +1 -0
  38. package/dist/commands/register.d.ts +5 -0
  39. package/dist/commands/register.d.ts.map +1 -0
  40. package/dist/commands/register.js +46 -0
  41. package/dist/commands/register.js.map +1 -0
  42. package/dist/commands/trigger.d.ts +11 -0
  43. package/dist/commands/trigger.d.ts.map +1 -0
  44. package/dist/commands/trigger.js +52 -0
  45. package/dist/commands/trigger.js.map +1 -0
  46. package/dist/config/runtime.d.ts +18 -0
  47. package/dist/config/runtime.d.ts.map +1 -0
  48. package/dist/config/runtime.js +32 -0
  49. package/dist/config/runtime.js.map +1 -0
  50. package/dist/services/auth.d.ts +18 -0
  51. package/dist/services/auth.d.ts.map +1 -0
  52. package/dist/services/auth.js +122 -0
  53. package/dist/services/auth.js.map +1 -0
  54. package/dist/services/builder.d.ts +4 -0
  55. package/dist/services/builder.d.ts.map +1 -0
  56. package/dist/services/builder.js +89 -0
  57. package/dist/services/builder.js.map +1 -0
  58. package/dist/services/controlPlane.d.ts +16 -0
  59. package/dist/services/controlPlane.d.ts.map +1 -0
  60. package/dist/services/controlPlane.js +155 -0
  61. package/dist/services/controlPlane.js.map +1 -0
  62. package/dist/services/deployer.d.ts +2 -0
  63. package/dist/services/deployer.d.ts.map +1 -0
  64. package/dist/services/deployer.js +49 -0
  65. package/dist/services/deployer.js.map +1 -0
  66. package/dist/services/project.d.ts +9 -0
  67. package/dist/services/project.d.ts.map +1 -0
  68. package/dist/services/project.js +29 -0
  69. package/dist/services/project.js.map +1 -0
  70. package/dist/services/sourceUploader.d.ts +9 -0
  71. package/dist/services/sourceUploader.d.ts.map +1 -0
  72. package/dist/services/sourceUploader.js +250 -0
  73. package/dist/services/sourceUploader.js.map +1 -0
  74. package/dist/services/uploader.d.ts +2 -0
  75. package/dist/services/uploader.d.ts.map +1 -0
  76. package/dist/services/uploader.js +59 -0
  77. package/dist/services/uploader.js.map +1 -0
  78. package/dist/types/deployment.d.ts +43 -0
  79. package/dist/types/deployment.d.ts.map +1 -0
  80. package/dist/types/deployment.js +6 -0
  81. package/dist/types/deployment.js.map +1 -0
  82. package/dist/types.d.ts +53 -0
  83. package/dist/types.d.ts.map +1 -0
  84. package/dist/types.js +7 -0
  85. package/dist/types.js.map +1 -0
  86. package/dist/utils/config.d.ts +17 -0
  87. package/dist/utils/config.d.ts.map +1 -0
  88. package/dist/utils/config.js +85 -0
  89. package/dist/utils/config.js.map +1 -0
  90. package/dist/utils/credentials.d.ts +16 -0
  91. package/dist/utils/credentials.d.ts.map +1 -0
  92. package/dist/utils/credentials.js +72 -0
  93. package/dist/utils/credentials.js.map +1 -0
  94. package/dist/utils/debug.d.ts +7 -0
  95. package/dist/utils/debug.d.ts.map +1 -0
  96. package/dist/utils/debug.js +21 -0
  97. package/dist/utils/debug.js.map +1 -0
  98. package/dist/utils/input.d.ts +3 -0
  99. package/dist/utils/input.d.ts.map +1 -0
  100. package/dist/utils/input.js +94 -0
  101. package/dist/utils/input.js.map +1 -0
  102. package/dist/utils/loader.d.ts +22 -0
  103. package/dist/utils/loader.d.ts.map +1 -0
  104. package/dist/utils/loader.js +139 -0
  105. package/dist/utils/loader.js.map +1 -0
  106. package/dist/utils/normalizer.d.ts +10 -0
  107. package/dist/utils/normalizer.d.ts.map +1 -0
  108. package/dist/utils/normalizer.js +115 -0
  109. package/dist/utils/normalizer.js.map +1 -0
  110. package/dist/utils/safety.d.ts +18 -0
  111. package/dist/utils/safety.d.ts.map +1 -0
  112. package/dist/utils/safety.js +140 -0
  113. package/dist/utils/safety.js.map +1 -0
  114. package/package.json +70 -0
package/README.md ADDED
@@ -0,0 +1,86 @@
1
+ # Dispatch CLI
2
+
3
+ The official command-line interface for [Dispatch](https://github.com/dispatch-paas/dispatch). Deploy your OpenAPI-defined APIs to production with built-in safety checks and tier-based access.
4
+
5
+ ## Installation
6
+ ```bash
7
+ npm install -g dispatch-cli
8
+ ```
9
+
10
+ ## Quick Start
11
+
12
+ ### 1. Get Your Access Code
13
+ Visit [usedp.xyz/dashboard](https://usedp.xyz/dashboard) to:
14
+ - Sign up for a Dispatch account
15
+ - Choose your tier (Free/Pro/Enterprise)
16
+ - Generate your access code
17
+
18
+ ### 2. Login
19
+ ```bash
20
+ dispatch login
21
+ # Paste your access code when prompted
22
+ ```
23
+
24
+ ### 3. Deploy Your API
25
+ ```bash
26
+ cd your-api-project
27
+ dispatch deploy
28
+ ```
29
+
30
+ ## Commands
31
+
32
+ ### `dispatch login`
33
+ Authenticate using your access code from the dashboard.
34
+
35
+ ```bash
36
+ dispatch login
37
+ # Interactive: prompts for access code
38
+
39
+ dispatch login --code YOUR_ACCESS_CODE
40
+ # Non-interactive: provide code directly
41
+ ```
42
+
43
+ ### `dispatch logout`
44
+ Remove local credentials.
45
+
46
+ ```bash
47
+ dispatch logout
48
+ ```
49
+
50
+ ### `dispatch check`
51
+ Run safety checks locally without deploying.
52
+
53
+ ```bash
54
+ dispatch check
55
+ dispatch check --project ./my-api
56
+ ```
57
+
58
+ ### `dispatch deploy`
59
+ Deploy your API to production after passing safety checks.
60
+
61
+ ```bash
62
+ dispatch deploy
63
+ dispatch deploy --project ./my-api
64
+ dispatch deploy --dry-run # Safety checks only
65
+ ```
66
+
67
+ ## Authentication
68
+
69
+ Dispatch uses **access code authentication**:
70
+ - Access codes are generated from your dashboard
71
+ - Single-use codes for security
72
+ - Tier-based access control
73
+ - No password storage in CLI
74
+
75
+ See [Access Code Authentication](../docs/ACCESS_CODE_AUTH.md) for details.
76
+
77
+ ## What this CLI does
78
+ * **Safety Checks**: Validates your OpenAPI spec for security issues
79
+ * **Builds**: Creates deployment artifacts with proper dependencies
80
+ * **Uploads**: Securely uploads artifacts to S3
81
+ * **Deploys**: Triggers deployments via the Control Plane
82
+ * **Monitors**: Provides real-time deployment status
83
+
84
+ ## Non-Goals
85
+ * **Cloud Infrastructure**: The CLI does not touch AWS resources directly
86
+ * **Local Emulation**: No local AWS environment emulation
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,148 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ const commander_1 = require("commander");
38
+ const check_1 = require("./commands/check");
39
+ const deploy_1 = require("./commands/deploy");
40
+ const login_1 = require("./commands/login");
41
+ const logout_1 = require("./commands/logout");
42
+ const projects_1 = require("./commands/projects");
43
+ const poll_1 = require("./commands/poll");
44
+ const debug_1 = require("./utils/debug");
45
+ const program = new commander_1.Command();
46
+ program
47
+ .name('dispatch')
48
+ .description('CLI for Dispatch - Safety-first serverless API PaaS')
49
+ .version('1.0.0')
50
+ .option('--debug', 'Enable debug logging');
51
+ // dispatch check command
52
+ program
53
+ .command('check')
54
+ .description('Run local safety checks on your API')
55
+ .option('-p, --project <path>', 'Project root directory', '.')
56
+ .action(async (options) => {
57
+ if (program.opts().debug)
58
+ (0, debug_1.setDebugEnabled)(true);
59
+ const exitCode = await (0, check_1.runCheck)(options.project);
60
+ process.exit(exitCode);
61
+ });
62
+ // dispatch deploy command
63
+ program
64
+ .command('deploy')
65
+ .description('Deploy your API to production')
66
+ .option('-p, --project <path>', 'Project root directory', '.')
67
+ .option('-s, --source <path>', 'Source directory path (alias for --project)', '.')
68
+ .option('--dry-run', 'Run safety checks only without deploying')
69
+ .option('--arch, --architecture <arch>', 'Target architecture (x86_64 only - arm64 coming soon)')
70
+ .action(async (options) => {
71
+ if (program.opts().debug)
72
+ (0, debug_1.setDebugEnabled)(true);
73
+ const exitCode = await (0, deploy_1.runDeploy)(options);
74
+ process.exit(exitCode);
75
+ });
76
+ // dispatch delete command
77
+ program
78
+ .command('delete')
79
+ .description('Delete a deployment')
80
+ .option('-p, --project <path>', 'Project root directory', '.')
81
+ .action(async (options) => {
82
+ if (program.opts().debug)
83
+ (0, debug_1.setDebugEnabled)(true);
84
+ const { runDelete } = await Promise.resolve().then(() => __importStar(require('./commands/delete')));
85
+ const exitCode = await runDelete(options);
86
+ process.exit(exitCode);
87
+ });
88
+ // dispatch logs command
89
+ program
90
+ .command('logs')
91
+ .description('View deployment build logs')
92
+ .option('-p, --project <path>', 'Project root directory', '.')
93
+ .action(async (options) => {
94
+ if (program.opts().debug)
95
+ (0, debug_1.setDebugEnabled)(true);
96
+ const { runLogs } = await Promise.resolve().then(() => __importStar(require('./commands/logs')));
97
+ const exitCode = await runLogs(options);
98
+ process.exit(exitCode);
99
+ });
100
+ // dispatch login command
101
+ program
102
+ .command('login')
103
+ .description('Authenticate with your Dispatch access code')
104
+ .option('-c, --code <code>', 'Access code from dashboard')
105
+ .action(async (options) => {
106
+ if (program.opts().debug)
107
+ (0, debug_1.setDebugEnabled)(true);
108
+ await (0, login_1.runLogin)(options);
109
+ });
110
+ // dispatch logout command
111
+ program
112
+ .command('logout')
113
+ .description('Remove local credentials')
114
+ .action(async () => {
115
+ if (program.opts().debug)
116
+ (0, debug_1.setDebugEnabled)(true);
117
+ await (0, logout_1.runLogout)();
118
+ });
119
+ // dispatch projects command
120
+ program
121
+ .command('projects')
122
+ .description('Manage your projects')
123
+ .argument('<action>', 'Action to perform (list)')
124
+ .action(async (action, options) => {
125
+ if (program.opts().debug)
126
+ (0, debug_1.setDebugEnabled)(true);
127
+ const exitCode = await (0, projects_1.runProjects)(action, options);
128
+ process.exit(exitCode);
129
+ });
130
+ // dispatch poll command
131
+ program
132
+ .command('poll')
133
+ .description('Poll deployment status with progressive updates')
134
+ .argument('<deployment-id>', 'Deployment ID to poll')
135
+ .option('-i, --interval <ms>', 'Polling interval in milliseconds', '2000')
136
+ .option('-m, --max-attempts <num>', 'Maximum polling attempts', '120')
137
+ .action(async (deploymentId, options) => {
138
+ if (program.opts().debug)
139
+ (0, debug_1.setDebugEnabled)(true);
140
+ await (0, poll_1.runPoll)(deploymentId, {
141
+ ...options,
142
+ interval: parseInt(options.interval),
143
+ maxAttempts: parseInt(options.maxAttempts)
144
+ });
145
+ });
146
+ // Parse command line arguments
147
+ program.parse();
148
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * dispatch check command - Local safety check for API deployments
3
+ *
4
+ * This command:
5
+ * - Loads the OpenAPI specification
6
+ * - Normalizes operations
7
+ * - Evaluates safety rules
8
+ * - Prints formatted results
9
+ * - Exits with appropriate status code
10
+ */
11
+ /**
12
+ * Run the safety check command
13
+ */
14
+ export declare function runCheck(projectRoot?: string): Promise<number>;
15
+ //# sourceMappingURL=check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgFH;;GAEG;AACH,wBAAsB,QAAQ,CAAC,WAAW,GAAE,MAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA8BzE"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ /**
3
+ * dispatch check command - Local safety check for API deployments
4
+ *
5
+ * This command:
6
+ * - Loads the OpenAPI specification
7
+ * - Normalizes operations
8
+ * - Evaluates safety rules
9
+ * - Prints formatted results
10
+ * - Exits with appropriate status code
11
+ */
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.runCheck = runCheck;
17
+ const chalk_1 = __importDefault(require("chalk"));
18
+ const loader_1 = require("../utils/loader");
19
+ const normalizer_1 = require("../utils/normalizer");
20
+ const safety_1 = require("../utils/safety");
21
+ /**
22
+ * Print success output when no blocking issues are found
23
+ */
24
+ function printSuccess(operations, findings) {
25
+ const summary = (0, safety_1.getFindingSummary)(findings);
26
+ if (summary.warn === 0) {
27
+ console.log(chalk_1.default.green('✔ Safety checks passed\n'));
28
+ // Count protected vs public routes
29
+ const protectedRoutes = operations.filter((op) => op.security.length > 0 && !op.is_public_override).length;
30
+ const publicRoutes = operations.filter((op) => op.security.length === 0 || op.is_public_override).length;
31
+ console.log(`Routes analyzed: ${operations.length}`);
32
+ console.log(`Protected routes: ${protectedRoutes}`);
33
+ console.log(`Public routes: ${publicRoutes}`);
34
+ console.log('\nNo blocking issues detected.');
35
+ }
36
+ else {
37
+ console.log(chalk_1.default.yellow('⚠ Safety checks completed with warnings\n'));
38
+ const warnings = findings.filter((f) => f.severity === 'warn');
39
+ if (warnings.length > 0) {
40
+ console.log('Warnings:');
41
+ for (const warning of warnings) {
42
+ console.log(chalk_1.default.yellow(`• ${warning.method} ${warning.route}`));
43
+ console.log(` ${warning.message}`);
44
+ }
45
+ }
46
+ console.log('\nDeployment would be allowed.');
47
+ }
48
+ }
49
+ /**
50
+ * Print failure output when blocking issues are found
51
+ */
52
+ function printFailure(findings) {
53
+ console.log(chalk_1.default.red('❌ Safety checks failed\n'));
54
+ const blockingIssues = findings.filter((f) => f.severity === 'block');
55
+ if (blockingIssues.length > 0) {
56
+ console.log('Blocking issues:');
57
+ for (const issue of blockingIssues) {
58
+ console.log(chalk_1.default.red(`• ${issue.method} ${issue.route}`));
59
+ console.log(` ${issue.message}`);
60
+ }
61
+ console.log('\nFix:');
62
+ console.log('- Declare authentication in OpenAPI');
63
+ console.log('- OR explicitly mark the route as public with a reason (x-public + x-reason)');
64
+ }
65
+ console.log('\nDeployment would be blocked.');
66
+ }
67
+ /**
68
+ * Print error message
69
+ */
70
+ function printError(message) {
71
+ console.log(chalk_1.default.red('❌ Error\n'));
72
+ console.log(message);
73
+ }
74
+ /**
75
+ * Run the safety check command
76
+ */
77
+ async function runCheck(projectRoot = '.') {
78
+ try {
79
+ // Step 1: Load OpenAPI specification
80
+ const spec = (0, loader_1.loadOpenAPISpec)(projectRoot);
81
+ // Step 2: Normalize operations
82
+ const operations = (0, normalizer_1.normalizeOpenAPISpec)(spec);
83
+ // Step 3: Evaluate safety rules
84
+ const findings = (0, safety_1.evaluateOperations)(operations);
85
+ // Step 4: Print results
86
+ const safe = (0, safety_1.isDeploymentSafe)(findings);
87
+ if (safe) {
88
+ printSuccess(operations, findings);
89
+ return 0;
90
+ }
91
+ else {
92
+ printFailure(findings);
93
+ return 1;
94
+ }
95
+ }
96
+ catch (error) {
97
+ // Step 5: Handle errors
98
+ if (error instanceof Error) {
99
+ printError(error.message);
100
+ }
101
+ else {
102
+ printError('An unexpected error occurred.');
103
+ }
104
+ return 1;
105
+ }
106
+ }
107
+ //# sourceMappingURL=check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface DeleteOptions {
2
+ project: string;
3
+ }
4
+ export declare function runDelete(options: DeleteOptions): Promise<number>;
5
+ export {};
6
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"AAOA,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CA2GvE"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runDelete = runDelete;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const js_yaml_1 = __importDefault(require("js-yaml"));
10
+ const inquirer_1 = __importDefault(require("inquirer"));
11
+ const auth_1 = require("../services/auth");
12
+ const project_1 = require("../services/project");
13
+ async function runDelete(options) {
14
+ try {
15
+ console.log('→ Verifying authentication...');
16
+ console.log();
17
+ // Verify authentication
18
+ const userInfo = await (0, auth_1.verifyAuthentication)();
19
+ if (!userInfo) {
20
+ console.error('❌ Not authenticated. Please run "dispatch login" first.');
21
+ return 1;
22
+ }
23
+ console.log(`✓ Authenticated as ${userInfo.user.email}`);
24
+ console.log(` Tier: ${userInfo.user.tier}`);
25
+ console.log();
26
+ // Try to load project configuration (optional for delete)
27
+ const projectRoot = path_1.default.resolve(options.project);
28
+ const configPath = path_1.default.join(projectRoot, 'dispatch.yaml');
29
+ let config = null;
30
+ if (fs_1.default.existsSync(configPath)) {
31
+ try {
32
+ const configContent = fs_1.default.readFileSync(configPath, 'utf8');
33
+ config = js_yaml_1.default.load(configContent);
34
+ console.log('→ Current directory project detected');
35
+ console.log(`Current project: ${config.projectName}`);
36
+ console.log();
37
+ }
38
+ catch (error) {
39
+ console.log('→ Found dispatch.yaml but could not parse it');
40
+ console.log();
41
+ }
42
+ }
43
+ else {
44
+ console.log('→ No dispatch.yaml found in current directory');
45
+ console.log();
46
+ }
47
+ // Get user's projects
48
+ console.log('→ Selecting project to delete...');
49
+ console.log();
50
+ const projects = await (0, project_1.listProjects)();
51
+ if (projects.length === 0) {
52
+ console.error('❌ No projects found. Deploy a project first.');
53
+ return 1;
54
+ }
55
+ // Check if current folder has a project that matches
56
+ const currentProjectName = config?.projectName;
57
+ // Create choices with current project highlighted
58
+ const choices = projects.map(p => {
59
+ const isCurrentProject = currentProjectName && p.name === currentProjectName;
60
+ return {
61
+ name: isCurrentProject ? `${p.name} (current project)` : p.name,
62
+ value: p,
63
+ short: p.name
64
+ };
65
+ });
66
+ // Always show selection, even if there's only one project
67
+ const { project: selectedProject } = await inquirer_1.default.prompt([
68
+ {
69
+ type: 'list',
70
+ name: 'project',
71
+ message: 'Select a project to delete:',
72
+ choices: choices,
73
+ pageSize: Math.min(10, projects.length)
74
+ }
75
+ ]);
76
+ console.log();
77
+ console.log(`Project: ${selectedProject.name}`);
78
+ // Confirm deletion
79
+ const { confirmDelete } = await inquirer_1.default.prompt([
80
+ {
81
+ type: 'confirm',
82
+ name: 'confirmDelete',
83
+ message: `Are you sure you want to delete the project "${selectedProject.name}"? This will remove all deployments and cannot be undone.`,
84
+ default: false
85
+ }
86
+ ]);
87
+ if (!confirmDelete) {
88
+ console.log('❌ Deletion cancelled.');
89
+ return 0;
90
+ }
91
+ console.log('→ Deleting project...');
92
+ console.log();
93
+ // Delete the project
94
+ await (0, project_1.deleteProject)(selectedProject.id);
95
+ console.log('✅ Project deleted successfully');
96
+ console.log();
97
+ return 0;
98
+ }
99
+ catch (error) {
100
+ console.error('❌ Deletion failed\n');
101
+ console.error('Error details:');
102
+ console.error(error.message);
103
+ console.error();
104
+ return 1;
105
+ }
106
+ }
107
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":";;;;;AAWA,8BA2GC;AAtHD,gDAAwB;AACxB,4CAAoB;AACpB,sDAA2B;AAC3B,wDAAgC;AAChC,2CAAwD;AACxD,iDAA2E;AAMpE,KAAK,UAAU,SAAS,CAAC,OAAsB;IACpD,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,wBAAwB;QACxB,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAoB,GAAE,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;YACzE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,0DAA0D;QAC1D,MAAM,WAAW,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAE3D,IAAI,MAAM,GAAQ,IAAI,CAAC;QACvB,IAAI,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAC1D,MAAM,GAAG,iBAAI,CAAC,IAAI,CAAC,aAAa,CAAQ,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;gBACpD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;gBACtD,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;gBAC5D,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,sBAAsB;QACtB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,QAAQ,GAAc,MAAM,IAAA,sBAAY,GAAE,CAAC;QAEjD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC9D,OAAO,CAAC,CAAC;QACX,CAAC;QAED,qDAAqD;QACrD,MAAM,kBAAkB,GAAG,MAAM,EAAE,WAAW,CAAC;QAE/C,kDAAkD;QAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC/B,MAAM,gBAAgB,GAAG,kBAAkB,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC;YAC7E,OAAO;gBACL,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC/D,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,CAAC,CAAC,IAAI;aACd,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,0DAA0D;QAC1D,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACzD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,6BAA6B;gBACtC,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC;aACxC;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,YAAY,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;QAEhD,mBAAmB;QACnB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YAC9C;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,gDAAgD,eAAe,CAAC,IAAI,2DAA2D;gBACxI,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO,CAAC,CAAC;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,qBAAqB;QACrB,MAAM,IAAA,uBAAa,EAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAExC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,OAAO,CAAC,CAAC;IAEX,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ interface DeployOptions {
2
+ dryRun?: boolean;
3
+ project?: string;
4
+ source?: string;
5
+ architecture?: string;
6
+ }
7
+ export declare function runDeploy(options?: DeployOptions): Promise<number>;
8
+ export {};
9
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAkBA,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA+CD,wBAAsB,SAAS,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiP5E"}