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.
- package/README.md +86 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +148 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/check.d.ts +15 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +107 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/delete.d.ts +6 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +107 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/deploy.d.ts +9 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +275 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/login.d.ts +4 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +34 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +2 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +15 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/logs.d.ts +6 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +129 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/poll.d.ts +10 -0
- package/dist/commands/poll.d.ts.map +1 -0
- package/dist/commands/poll.js +72 -0
- package/dist/commands/poll.js.map +1 -0
- package/dist/commands/projects.d.ts +5 -0
- package/dist/commands/projects.d.ts.map +1 -0
- package/dist/commands/projects.js +49 -0
- package/dist/commands/projects.js.map +1 -0
- package/dist/commands/register.d.ts +5 -0
- package/dist/commands/register.d.ts.map +1 -0
- package/dist/commands/register.js +46 -0
- package/dist/commands/register.js.map +1 -0
- package/dist/commands/trigger.d.ts +11 -0
- package/dist/commands/trigger.d.ts.map +1 -0
- package/dist/commands/trigger.js +52 -0
- package/dist/commands/trigger.js.map +1 -0
- package/dist/config/runtime.d.ts +18 -0
- package/dist/config/runtime.d.ts.map +1 -0
- package/dist/config/runtime.js +32 -0
- package/dist/config/runtime.js.map +1 -0
- package/dist/services/auth.d.ts +18 -0
- package/dist/services/auth.d.ts.map +1 -0
- package/dist/services/auth.js +122 -0
- package/dist/services/auth.js.map +1 -0
- package/dist/services/builder.d.ts +4 -0
- package/dist/services/builder.d.ts.map +1 -0
- package/dist/services/builder.js +89 -0
- package/dist/services/builder.js.map +1 -0
- package/dist/services/controlPlane.d.ts +16 -0
- package/dist/services/controlPlane.d.ts.map +1 -0
- package/dist/services/controlPlane.js +155 -0
- package/dist/services/controlPlane.js.map +1 -0
- package/dist/services/deployer.d.ts +2 -0
- package/dist/services/deployer.d.ts.map +1 -0
- package/dist/services/deployer.js +49 -0
- package/dist/services/deployer.js.map +1 -0
- package/dist/services/project.d.ts +9 -0
- package/dist/services/project.d.ts.map +1 -0
- package/dist/services/project.js +29 -0
- package/dist/services/project.js.map +1 -0
- package/dist/services/sourceUploader.d.ts +9 -0
- package/dist/services/sourceUploader.d.ts.map +1 -0
- package/dist/services/sourceUploader.js +250 -0
- package/dist/services/sourceUploader.js.map +1 -0
- package/dist/services/uploader.d.ts +2 -0
- package/dist/services/uploader.d.ts.map +1 -0
- package/dist/services/uploader.js +59 -0
- package/dist/services/uploader.js.map +1 -0
- package/dist/types/deployment.d.ts +43 -0
- package/dist/types/deployment.d.ts.map +1 -0
- package/dist/types/deployment.js +6 -0
- package/dist/types/deployment.js.map +1 -0
- package/dist/types.d.ts +53 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/config.d.ts +17 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +85 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/credentials.d.ts +16 -0
- package/dist/utils/credentials.d.ts.map +1 -0
- package/dist/utils/credentials.js +72 -0
- package/dist/utils/credentials.js.map +1 -0
- package/dist/utils/debug.d.ts +7 -0
- package/dist/utils/debug.d.ts.map +1 -0
- package/dist/utils/debug.js +21 -0
- package/dist/utils/debug.js.map +1 -0
- package/dist/utils/input.d.ts +3 -0
- package/dist/utils/input.d.ts.map +1 -0
- package/dist/utils/input.js +94 -0
- package/dist/utils/input.js.map +1 -0
- package/dist/utils/loader.d.ts +22 -0
- package/dist/utils/loader.d.ts.map +1 -0
- package/dist/utils/loader.js +139 -0
- package/dist/utils/loader.js.map +1 -0
- package/dist/utils/normalizer.d.ts +10 -0
- package/dist/utils/normalizer.d.ts.map +1 -0
- package/dist/utils/normalizer.js +115 -0
- package/dist/utils/normalizer.js.map +1 -0
- package/dist/utils/safety.d.ts +18 -0
- package/dist/utils/safety.d.ts.map +1 -0
- package/dist/utils/safety.js +140 -0
- package/dist/utils/safety.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,275 @@
|
|
|
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.runDeploy = runDeploy;
|
|
7
|
+
/**
|
|
8
|
+
* Run the deploy command
|
|
9
|
+
*/
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
12
|
+
const loader_1 = require("../utils/loader");
|
|
13
|
+
const normalizer_1 = require("../utils/normalizer");
|
|
14
|
+
const safety_1 = require("../utils/safety");
|
|
15
|
+
const config_1 = require("../utils/config");
|
|
16
|
+
const controlPlane_1 = require("../services/controlPlane");
|
|
17
|
+
const sourceUploader_1 = require("../services/sourceUploader");
|
|
18
|
+
const auth_1 = require("../services/auth");
|
|
19
|
+
const project_1 = require("../services/project");
|
|
20
|
+
function printSafetyResults(findings) {
|
|
21
|
+
const blockingIssues = findings.filter((f) => f.severity === 'block');
|
|
22
|
+
const warnings = findings.filter((f) => f.severity === 'warn');
|
|
23
|
+
const passed = findings.filter((f) => f.severity === 'pass' || (!f.severity));
|
|
24
|
+
console.log(chalk_1.default.bold('\n📋 Safety Check Results:\n'));
|
|
25
|
+
if (blockingIssues.length > 0) {
|
|
26
|
+
console.log(chalk_1.default.red(`[ERROR] Failed: ${blockingIssues.length} blocking issue(s)`));
|
|
27
|
+
for (const issue of blockingIssues) {
|
|
28
|
+
console.log(chalk_1.default.red(` • ${issue.method} ${issue.route}`));
|
|
29
|
+
console.log(` ${issue.message}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (warnings.length > 0) {
|
|
33
|
+
console.log(chalk_1.default.yellow(`[WARN] Warnings: ${warnings.length} issue(s)`));
|
|
34
|
+
for (const warn of warnings) {
|
|
35
|
+
console.log(chalk_1.default.yellow(` • ${warn.method} ${warn.route}`));
|
|
36
|
+
console.log(` ${warn.message}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (passed.length > 0) {
|
|
40
|
+
console.log(chalk_1.default.green(`[PASS] Passed: ${passed.length} check(s)`));
|
|
41
|
+
}
|
|
42
|
+
if (blockingIssues.length > 0) {
|
|
43
|
+
console.log(chalk_1.default.bold('\n💡 How to fix:'));
|
|
44
|
+
console.log(' - Declare authentication in OpenAPI specification');
|
|
45
|
+
console.log(' - OR explicitly mark routes as public (x-public + x-reason)');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function printSuccess(url, safetySkipped) {
|
|
49
|
+
if (!safetySkipped) {
|
|
50
|
+
console.log(chalk_1.default.green('[OK] Safety checks completed'));
|
|
51
|
+
}
|
|
52
|
+
console.log(chalk_1.default.green('[OK] Build completed'));
|
|
53
|
+
console.log(chalk_1.default.green('[OK] Upload completed'));
|
|
54
|
+
console.log(chalk_1.default.green('[OK] Deployment live\n'));
|
|
55
|
+
console.log('API URL:');
|
|
56
|
+
console.log(chalk_1.default.cyan(url));
|
|
57
|
+
}
|
|
58
|
+
async function runDeploy(options = {}) {
|
|
59
|
+
// Use --source parameter, or fall back to --project, or default to current directory
|
|
60
|
+
const projectRoot = options.source || options.project || '.';
|
|
61
|
+
try {
|
|
62
|
+
// Step 0: Verify authentication with control plane
|
|
63
|
+
console.log(chalk_1.default.bold('\n→ Verifying authentication...\n'));
|
|
64
|
+
const authResult = await (0, auth_1.verifyAuthentication)();
|
|
65
|
+
if (!authResult) {
|
|
66
|
+
console.log(chalk_1.default.red('\n[AUTH ERROR] Authentication required to deploy\n'));
|
|
67
|
+
console.log(chalk_1.default.gray('Please login first:'));
|
|
68
|
+
console.log(chalk_1.default.cyan(' dispatch login\n'));
|
|
69
|
+
console.log(chalk_1.default.gray('Get your access code from: https://usedp.xyz/dashboard\n'));
|
|
70
|
+
return 1;
|
|
71
|
+
}
|
|
72
|
+
if (!authResult.user.is_active) {
|
|
73
|
+
console.log(chalk_1.default.red('\n[ACCOUNT ERROR] Your account is not active\n'));
|
|
74
|
+
console.log(chalk_1.default.gray('Please contact support for assistance.\n'));
|
|
75
|
+
return 1;
|
|
76
|
+
}
|
|
77
|
+
console.log(chalk_1.default.green(`[AUTH] Authenticated as ${authResult.user.email || authResult.user.id}`));
|
|
78
|
+
if (authResult.user.tier) {
|
|
79
|
+
console.log(chalk_1.default.gray(` Tier: ${authResult.user.tier}\n`));
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
console.log();
|
|
83
|
+
}
|
|
84
|
+
// Step 1: Load project config
|
|
85
|
+
console.log(chalk_1.default.bold('→ Loading project configuration...\n'));
|
|
86
|
+
const config = (0, config_1.loadConfig)(projectRoot);
|
|
87
|
+
(0, config_1.validateConfig)(config);
|
|
88
|
+
// Validate architecture
|
|
89
|
+
const architecture = options.architecture || config.architecture;
|
|
90
|
+
if (architecture && architecture !== 'x86_64') {
|
|
91
|
+
console.log(chalk_1.default.red('\n[ARCH ERROR] Only x86_64 architecture is currently supported\n'));
|
|
92
|
+
console.log(chalk_1.default.gray('ARM64 support is coming soon.\n'));
|
|
93
|
+
return 1;
|
|
94
|
+
}
|
|
95
|
+
// Step 1.5: Interactive project selection
|
|
96
|
+
console.log(chalk_1.default.bold('→ Selecting project...\n'));
|
|
97
|
+
const projects = await (0, project_1.listProjects)();
|
|
98
|
+
let selectedProjectId;
|
|
99
|
+
let selectedProjectName;
|
|
100
|
+
if (projects.length === 0) {
|
|
101
|
+
// No existing projects - create new one
|
|
102
|
+
console.log(chalk_1.default.gray('No existing projects found.\n'));
|
|
103
|
+
const { projectName } = await inquirer_1.default.prompt([
|
|
104
|
+
{
|
|
105
|
+
type: 'input',
|
|
106
|
+
name: 'projectName',
|
|
107
|
+
message: 'Enter project name:',
|
|
108
|
+
default: config.projectName,
|
|
109
|
+
validate: (input) => {
|
|
110
|
+
if (!input || !input.trim()) {
|
|
111
|
+
return 'Project name cannot be empty';
|
|
112
|
+
}
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
]);
|
|
117
|
+
console.log(chalk_1.default.gray(`\nCreating new project "${projectName}"...\n`));
|
|
118
|
+
const newProject = await (0, project_1.createProject)(projectName);
|
|
119
|
+
selectedProjectId = newProject.id;
|
|
120
|
+
selectedProjectName = projectName;
|
|
121
|
+
console.log(chalk_1.default.green(`[OK] Project created\n`));
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
// User has existing projects - show selection
|
|
125
|
+
const choices = [
|
|
126
|
+
...projects.map(p => ({
|
|
127
|
+
name: `${p.name} (update existing)`,
|
|
128
|
+
value: { type: 'existing', id: p.id, name: p.name }
|
|
129
|
+
})),
|
|
130
|
+
{
|
|
131
|
+
name: chalk_1.default.green('+ Create new project'),
|
|
132
|
+
value: { type: 'new' }
|
|
133
|
+
}
|
|
134
|
+
];
|
|
135
|
+
const { selection } = await inquirer_1.default.prompt([
|
|
136
|
+
{
|
|
137
|
+
type: 'list',
|
|
138
|
+
name: 'selection',
|
|
139
|
+
message: 'Select a project:',
|
|
140
|
+
choices
|
|
141
|
+
}
|
|
142
|
+
]);
|
|
143
|
+
if (selection.type === 'existing') {
|
|
144
|
+
selectedProjectId = selection.id;
|
|
145
|
+
selectedProjectName = selection.name;
|
|
146
|
+
console.log(chalk_1.default.gray(`\nUpdating project "${selectedProjectName}"\n`));
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// Creating new project
|
|
150
|
+
const { projectName } = await inquirer_1.default.prompt([
|
|
151
|
+
{
|
|
152
|
+
type: 'input',
|
|
153
|
+
name: 'projectName',
|
|
154
|
+
message: 'Enter new project name:',
|
|
155
|
+
default: config.projectName,
|
|
156
|
+
validate: (input) => {
|
|
157
|
+
if (!input || !input.trim()) {
|
|
158
|
+
return 'Project name cannot be empty';
|
|
159
|
+
}
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
]);
|
|
164
|
+
console.log(chalk_1.default.gray(`\nCreating new project "${projectName}"...\n`));
|
|
165
|
+
const newProject = await (0, project_1.createProject)(projectName);
|
|
166
|
+
selectedProjectId = newProject.id;
|
|
167
|
+
selectedProjectName = projectName;
|
|
168
|
+
console.log(chalk_1.default.green(`[OK] Project created\n`));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
console.log(`Project: ${selectedProjectName}`);
|
|
172
|
+
// Step 2: Safety Checks
|
|
173
|
+
console.log(chalk_1.default.bold('→ Running safety checks...\n'));
|
|
174
|
+
let spec;
|
|
175
|
+
let findings = [];
|
|
176
|
+
let safetySkipped = false;
|
|
177
|
+
try {
|
|
178
|
+
spec = (0, loader_1.loadOpenAPISpec)(projectRoot);
|
|
179
|
+
const operations = (0, normalizer_1.normalizeOpenAPISpec)(spec);
|
|
180
|
+
findings = (0, safety_1.evaluateOperations)(operations);
|
|
181
|
+
// Always print safety results
|
|
182
|
+
printSafetyResults(findings);
|
|
183
|
+
const safe = (0, safety_1.isDeploymentSafe)(findings);
|
|
184
|
+
if (!safe) {
|
|
185
|
+
console.log(chalk_1.default.red('\n[SECURITY ERROR] Deployment blocked due to security issues\n'));
|
|
186
|
+
console.log(chalk_1.default.gray('Fix the security issues above or remove openapi.yaml to skip safety checks.\n'));
|
|
187
|
+
return 1;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
catch (e) {
|
|
191
|
+
if (e.message.includes('No OpenAPI specification found')) {
|
|
192
|
+
console.log(chalk_1.default.yellow('[WARN] No OpenAPI spec found. Skipping safety checks.'));
|
|
193
|
+
safetySkipped = true;
|
|
194
|
+
spec = {};
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
throw e;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
console.log();
|
|
201
|
+
if (options.dryRun) {
|
|
202
|
+
console.log(chalk_1.default.blue('ℹ Dry run mode - stopping before deployment'));
|
|
203
|
+
return 0;
|
|
204
|
+
}
|
|
205
|
+
// Step 3: Upload Source Code (Cloud Build)
|
|
206
|
+
console.log(chalk_1.default.bold('→ Uploading source code...\n'));
|
|
207
|
+
// Create deployment first to get upload URL
|
|
208
|
+
const deployment = await (0, controlPlane_1.createDeployment)({
|
|
209
|
+
projectId: selectedProjectId,
|
|
210
|
+
projectName: selectedProjectName,
|
|
211
|
+
runtime: config.runtime,
|
|
212
|
+
openApiSpec: spec,
|
|
213
|
+
safetyFindings: findings,
|
|
214
|
+
handler: config.handler,
|
|
215
|
+
architecture: options.architecture || config.architecture,
|
|
216
|
+
});
|
|
217
|
+
console.log(chalk_1.default.green(`[OK] Deployment created: ${deployment.deploymentId}\n`));
|
|
218
|
+
// Upload source code to presigned URL
|
|
219
|
+
if (deployment.uploadUrl) {
|
|
220
|
+
const sourceZip = await (0, sourceUploader_1.uploadSourceCode)(projectRoot, selectedProjectName, deployment.deploymentId, authResult.user.tier);
|
|
221
|
+
// Upload to S3 via presigned URL
|
|
222
|
+
const uploadResponse = await fetch(deployment.uploadUrl, {
|
|
223
|
+
method: 'PUT',
|
|
224
|
+
body: sourceZip,
|
|
225
|
+
headers: {
|
|
226
|
+
'Content-Type': 'application/zip',
|
|
227
|
+
},
|
|
228
|
+
});
|
|
229
|
+
if (!uploadResponse.ok) {
|
|
230
|
+
throw new Error(`Failed to upload source code: ${uploadResponse.statusText}`);
|
|
231
|
+
}
|
|
232
|
+
console.log(chalk_1.default.green('[OK] Source code uploaded\n'));
|
|
233
|
+
}
|
|
234
|
+
console.log(chalk_1.default.bold('→ Build queued (cloud build in progress)...\n'));
|
|
235
|
+
// Step 7: Poll for completion
|
|
236
|
+
console.log(chalk_1.default.bold('→ Waiting for deployment...\n'));
|
|
237
|
+
const finalStatus = await (0, controlPlane_1.waitForDeployment)(deployment.deploymentId);
|
|
238
|
+
// Step 8: Finalize
|
|
239
|
+
console.log();
|
|
240
|
+
if (finalStatus.status === 'live' && finalStatus.url) {
|
|
241
|
+
printSuccess(finalStatus.url, safetySkipped);
|
|
242
|
+
return 0;
|
|
243
|
+
}
|
|
244
|
+
else if (finalStatus.status === 'blocked') {
|
|
245
|
+
printSafetyResults(finalStatus.findings || findings);
|
|
246
|
+
return 1;
|
|
247
|
+
}
|
|
248
|
+
else if (finalStatus.status === 'failed') {
|
|
249
|
+
console.log(chalk_1.default.red('[DEPLOY ERROR] Deployment failed'));
|
|
250
|
+
return 1;
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
console.log(chalk_1.default.red(`[STATUS ERROR] Unexpected status: ${finalStatus.status}`));
|
|
254
|
+
return 1;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
console.log();
|
|
259
|
+
console.log(chalk_1.default.red('[ERROR] Deployment failed\n'));
|
|
260
|
+
if (error.message.includes('No OpenAPI specification found')) {
|
|
261
|
+
console.log(chalk_1.default.red('Error: No OpenAPI spec found'));
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
console.log(chalk_1.default.yellow('Error details:'));
|
|
265
|
+
console.log(error.message);
|
|
266
|
+
// Show stack trace in debug mode
|
|
267
|
+
if (process.env.DEBUG) {
|
|
268
|
+
console.log('\nStack trace:');
|
|
269
|
+
console.log(error.stack);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return 1;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAKA,wBAAsB,QAAQ,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,iBA4BxD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
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.runLogin = runLogin;
|
|
7
|
+
const auth_1 = require("../services/auth");
|
|
8
|
+
const input_1 = require("../utils/input");
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
async function runLogin(options) {
|
|
11
|
+
let accessCode = options.code;
|
|
12
|
+
console.log(chalk_1.default.blue('\n🔐 Dispatch Login\n'));
|
|
13
|
+
console.log(chalk_1.default.gray('Get your access code from: https://usedp.xyz/dashboard\n'));
|
|
14
|
+
if (!accessCode) {
|
|
15
|
+
accessCode = await (0, input_1.askQuestion)('Access Code: ');
|
|
16
|
+
}
|
|
17
|
+
if (!accessCode) {
|
|
18
|
+
console.error(chalk_1.default.red('\n❌ Access code is required.'));
|
|
19
|
+
console.log(chalk_1.default.gray('Visit https://usedp.xyz/dashboard to generate your access code.'));
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
console.log(chalk_1.default.gray('\n⏳ Verifying access code...'));
|
|
23
|
+
const success = await (0, auth_1.loginWithAccessCode)(accessCode.trim());
|
|
24
|
+
if (success) {
|
|
25
|
+
console.log(chalk_1.default.green('✅ Successfully logged in!'));
|
|
26
|
+
console.log(chalk_1.default.gray('Credentials saved to ~/.dispatch/credentials.json\n'));
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
console.error(chalk_1.default.red('\n❌ Login failed. Invalid or expired access code.\n'));
|
|
30
|
+
console.log(chalk_1.default.gray('Visit https://usedp.xyz/dashboard to generate a new access code.'));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":";;;;;AAKA,4BA4BC;AAhCD,2CAAuD;AACvD,0CAA6C;AAC7C,kDAA0B;AAEnB,KAAK,UAAU,QAAQ,CAAC,OAA0B;IACvD,IAAI,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAE9B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC;IAEpF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,MAAM,IAAA,mBAAW,EAAC,eAAe,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC,CAAC;QAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAExD,MAAM,OAAO,GAAG,MAAM,IAAA,0BAAmB,EAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAE7D,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAGA,wBAAsB,SAAS,kBAO9B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
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.runLogout = runLogout;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const credentials_1 = require("../utils/credentials");
|
|
9
|
+
async function runLogout() {
|
|
10
|
+
console.log(chalk_1.default.blue('\n👋 Dispatch Logout\n'));
|
|
11
|
+
(0, credentials_1.clearCredentials)();
|
|
12
|
+
console.log(chalk_1.default.green('✅ Successfully logged out!'));
|
|
13
|
+
console.log(chalk_1.default.gray('Your credentials have been removed.\n'));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=logout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":";;;;;AAGA,8BAOC;AAVD,kDAA0B;AAC1B,sDAAwD;AAEjD,KAAK,UAAU,SAAS;IAC7B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAElD,IAAA,8BAAgB,GAAE,CAAC;IAEnB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAQA,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAiInE"}
|
|
@@ -0,0 +1,129 @@
|
|
|
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.runLogs = runLogs;
|
|
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
|
+
const controlPlane_1 = require("../services/controlPlane");
|
|
14
|
+
async function runLogs(options) {
|
|
15
|
+
try {
|
|
16
|
+
console.log('→ Verifying authentication...');
|
|
17
|
+
console.log();
|
|
18
|
+
// Verify authentication
|
|
19
|
+
const userInfo = await (0, auth_1.verifyAuthentication)();
|
|
20
|
+
if (!userInfo) {
|
|
21
|
+
console.error('❌ Not authenticated. Please run "dispatch login" first.');
|
|
22
|
+
return 1;
|
|
23
|
+
}
|
|
24
|
+
console.log(`✓ Authenticated as ${userInfo.user.email}`);
|
|
25
|
+
console.log(` Tier: ${userInfo.user.tier}`);
|
|
26
|
+
console.log();
|
|
27
|
+
// Try to load project configuration (optional)
|
|
28
|
+
const projectRoot = path_1.default.resolve(options.project);
|
|
29
|
+
const configPath = path_1.default.join(projectRoot, 'dispatch.yaml');
|
|
30
|
+
let config = null;
|
|
31
|
+
if (fs_1.default.existsSync(configPath)) {
|
|
32
|
+
try {
|
|
33
|
+
const configContent = fs_1.default.readFileSync(configPath, 'utf8');
|
|
34
|
+
config = js_yaml_1.default.load(configContent);
|
|
35
|
+
console.log('→ Current directory project detected');
|
|
36
|
+
console.log(`Current project: ${config.projectName}`);
|
|
37
|
+
console.log();
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.log('→ Found dispatch.yaml but could not parse it');
|
|
41
|
+
console.log();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
console.log('→ No dispatch.yaml found in current directory');
|
|
46
|
+
console.log();
|
|
47
|
+
}
|
|
48
|
+
// Get user's projects
|
|
49
|
+
console.log('→ Selecting project...');
|
|
50
|
+
console.log();
|
|
51
|
+
const projects = await (0, project_1.listProjects)();
|
|
52
|
+
if (projects.length === 0) {
|
|
53
|
+
console.error('[ERROR] No projects found. Deploy a project first.');
|
|
54
|
+
return 1;
|
|
55
|
+
}
|
|
56
|
+
// Check if current folder has a project that matches
|
|
57
|
+
const currentProjectName = config?.projectName;
|
|
58
|
+
// Create choices with current project highlighted
|
|
59
|
+
const choices = projects.map(p => {
|
|
60
|
+
const isCurrentProject = currentProjectName && p.name === currentProjectName;
|
|
61
|
+
return {
|
|
62
|
+
name: isCurrentProject ? `${p.name} (current project)` : p.name,
|
|
63
|
+
value: p,
|
|
64
|
+
short: p.name
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
// Always show selection, even if there's only one project
|
|
68
|
+
const { project: selectedProject } = await inquirer_1.default.prompt([
|
|
69
|
+
{
|
|
70
|
+
type: 'list',
|
|
71
|
+
name: 'project',
|
|
72
|
+
message: 'Select a project to view logs:',
|
|
73
|
+
choices: choices,
|
|
74
|
+
pageSize: Math.min(10, projects.length)
|
|
75
|
+
}
|
|
76
|
+
]);
|
|
77
|
+
console.log();
|
|
78
|
+
console.log(`Project: ${selectedProject.name}`);
|
|
79
|
+
// Get deployments for this project
|
|
80
|
+
console.log('→ Fetching deployments...');
|
|
81
|
+
const deployments = await (0, controlPlane_1.authFetch)(`/deployments/${selectedProject.id}`);
|
|
82
|
+
if (!deployments || !deployments.deployments || deployments.deployments.length === 0) {
|
|
83
|
+
console.error('[ERROR] No deployments found for this project.');
|
|
84
|
+
return 1;
|
|
85
|
+
}
|
|
86
|
+
// Show recent deployments
|
|
87
|
+
const recentDeployments = deployments.deployments
|
|
88
|
+
.slice(0, 10)
|
|
89
|
+
.map((d) => ({
|
|
90
|
+
name: `${d.id.slice(0, 8)} - ${d.status} (${new Date(d.created_at).toLocaleString()})`,
|
|
91
|
+
value: d,
|
|
92
|
+
short: d.id.slice(0, 8)
|
|
93
|
+
}));
|
|
94
|
+
const { deployment } = await inquirer_1.default.prompt([
|
|
95
|
+
{
|
|
96
|
+
type: 'list',
|
|
97
|
+
name: 'deployment',
|
|
98
|
+
message: 'Select a deployment to view logs:',
|
|
99
|
+
choices: recentDeployments,
|
|
100
|
+
pageSize: Math.min(10, recentDeployments.length)
|
|
101
|
+
}
|
|
102
|
+
]);
|
|
103
|
+
console.log();
|
|
104
|
+
console.log(`Deployment: ${deployment.id}`);
|
|
105
|
+
console.log(`Status: ${deployment.status}`);
|
|
106
|
+
console.log(`Created: ${new Date(deployment.created_at).toLocaleString()}`);
|
|
107
|
+
console.log();
|
|
108
|
+
// Show build logs
|
|
109
|
+
if (deployment.build_logs) {
|
|
110
|
+
console.log('[BUILD LOGS]:');
|
|
111
|
+
console.log('─'.repeat(80));
|
|
112
|
+
console.log(deployment.build_logs);
|
|
113
|
+
console.log('─'.repeat(80));
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
console.log('ℹ️ No build logs available for this deployment.');
|
|
117
|
+
console.log(' Build logs are only available for deployments made with the updated worker.');
|
|
118
|
+
}
|
|
119
|
+
return 0;
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
console.error('❌ Failed to fetch logs\n');
|
|
123
|
+
console.error('Error details:');
|
|
124
|
+
console.error(error.message);
|
|
125
|
+
console.error();
|
|
126
|
+
return 1;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# 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,10 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
interface PollOptions {
|
|
3
|
+
debug?: boolean;
|
|
4
|
+
interval?: number;
|
|
5
|
+
maxAttempts?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function runPoll(deploymentId: string, options: PollOptions): Promise<void>;
|
|
8
|
+
export declare const pollCommand: Command;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=poll.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poll.d.ts","sourceRoot":"","sources":["../../src/commands/poll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,iBA2DvE;AAED,eAAO,MAAM,WAAW,SAYpB,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pollCommand = void 0;
|
|
4
|
+
exports.runPoll = runPoll;
|
|
5
|
+
const commander_1 = require("commander");
|
|
6
|
+
const controlPlane_1 = require("../services/controlPlane");
|
|
7
|
+
const debug_1 = require("../utils/debug");
|
|
8
|
+
async function runPoll(deploymentId, options) {
|
|
9
|
+
try {
|
|
10
|
+
console.log(`[POLL] Polling deployment status: ${deploymentId}`);
|
|
11
|
+
const interval = options.interval || 2000;
|
|
12
|
+
const maxAttempts = options.maxAttempts || 120;
|
|
13
|
+
let lastStatus = '';
|
|
14
|
+
const getStatusMessage = (status) => {
|
|
15
|
+
switch (status) {
|
|
16
|
+
case 'pending': return '[QUEUE] Queuing deployment';
|
|
17
|
+
case 'building': return '[BUILD] Building artifact';
|
|
18
|
+
case 'iam-setup': return '[IAM] Setting up IAM role';
|
|
19
|
+
case 'lambda-deploying': return '[DEPLOY] Deploying Lambda function';
|
|
20
|
+
case 'lambda-verifying': return '[VERIFY] Verifying Lambda deployment';
|
|
21
|
+
case 'api-setup': return '[API] Setting up API Gateway';
|
|
22
|
+
case 'api-verifying': return '[VERIFY] Verifying API Gateway';
|
|
23
|
+
case 'finalizing': return '[FINAL] Performing final checks';
|
|
24
|
+
case 'deploying': return '[DEPLOY] Finalizing deployment';
|
|
25
|
+
case 'live': return '[SUCCESS] Deployment complete';
|
|
26
|
+
case 'failed': return '[ERROR] Deployment failed';
|
|
27
|
+
default: return `[STATUS] ${status}`;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
31
|
+
const status = await (0, controlPlane_1.pollDeploymentStatus)(deploymentId);
|
|
32
|
+
(0, debug_1.debugLog)(`Poll attempt ${i + 1}: status="${status.status}", url="${status.url}"`);
|
|
33
|
+
// Show status change messages
|
|
34
|
+
if (status.status !== lastStatus) {
|
|
35
|
+
const message = getStatusMessage(status.status);
|
|
36
|
+
console.log(message);
|
|
37
|
+
lastStatus = status.status;
|
|
38
|
+
}
|
|
39
|
+
if (status.status === 'live') {
|
|
40
|
+
console.log(`\n[SUCCESS] Deployment complete!`);
|
|
41
|
+
if (status.url) {
|
|
42
|
+
console.log(`[URL] Live URL: ${status.url}`);
|
|
43
|
+
}
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (status.status === 'failed') {
|
|
47
|
+
console.log(`\n💥 Deployment failed`);
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
await new Promise(resolve => setTimeout(resolve, interval));
|
|
51
|
+
}
|
|
52
|
+
console.log(`\n⏱️ Polling timed out after ${maxAttempts} attempts`);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.error('❌ Failed to poll deployment:', error);
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.pollCommand = new commander_1.Command('poll')
|
|
60
|
+
.description('Poll deployment status with progressive updates')
|
|
61
|
+
.argument('<deployment-id>', 'Deployment ID to poll')
|
|
62
|
+
.option('--debug', 'Enable debug logging')
|
|
63
|
+
.option('-i, --interval <ms>', 'Polling interval in milliseconds', '2000')
|
|
64
|
+
.option('-m, --max-attempts <num>', 'Maximum polling attempts', '120')
|
|
65
|
+
.action((deploymentId, options) => {
|
|
66
|
+
runPoll(deploymentId, {
|
|
67
|
+
...options,
|
|
68
|
+
interval: parseInt(options.interval),
|
|
69
|
+
maxAttempts: parseInt(options.maxAttempts)
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=poll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poll.js","sourceRoot":"","sources":["../../src/commands/poll.ts"],"names":[],"mappings":";;;AAUA,0BA2DC;AArED,yCAAoC;AACpC,2DAAgE;AAChE,0CAA0C;AAQnC,KAAK,UAAU,OAAO,CAAC,YAAoB,EAAE,OAAoB;IACtE,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAC;QAEjE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;QAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC;QAE/C,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAU,EAAE;YAClD,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,SAAS,CAAC,CAAC,OAAO,4BAA4B,CAAC;gBACpD,KAAK,UAAU,CAAC,CAAC,OAAO,2BAA2B,CAAC;gBACpD,KAAK,WAAW,CAAC,CAAC,OAAO,2BAA2B,CAAC;gBACrD,KAAK,kBAAkB,CAAC,CAAC,OAAO,oCAAoC,CAAC;gBACrE,KAAK,kBAAkB,CAAC,CAAC,OAAO,sCAAsC,CAAC;gBACvE,KAAK,WAAW,CAAC,CAAC,OAAO,8BAA8B,CAAC;gBACxD,KAAK,eAAe,CAAC,CAAC,OAAO,gCAAgC,CAAC;gBAC9D,KAAK,YAAY,CAAC,CAAC,OAAO,iCAAiC,CAAC;gBAC5D,KAAK,WAAW,CAAC,CAAC,OAAO,gCAAgC,CAAC;gBAC1D,KAAK,MAAM,CAAC,CAAC,OAAO,+BAA+B,CAAC;gBACpD,KAAK,QAAQ,CAAC,CAAC,OAAO,2BAA2B,CAAC;gBAClD,OAAO,CAAC,CAAC,OAAO,YAAY,MAAM,EAAE,CAAC;YACvC,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,IAAA,mCAAoB,EAAC,YAAY,CAAC,CAAC;YACxD,IAAA,gBAAQ,EAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;YAElF,8BAA8B;YAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACrB,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7B,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;gBAChD,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,WAAW,WAAW,CAAC,CAAC;IAEtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAEY,QAAA,WAAW,GAAG,IAAI,mBAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,iDAAiD,CAAC;KAC9D,QAAQ,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;KACpD,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;KACzC,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,EAAE,MAAM,CAAC;KACzE,MAAM,CAAC,0BAA0B,EAAE,0BAA0B,EAAE,KAAK,CAAC;KACrE,MAAM,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE;IAChC,OAAO,CAAC,YAAY,EAAE;QACpB,GAAG,OAAO;QACV,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;QACpC,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;KAC3C,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/commands/projects.ts"],"names":[],"mappings":"AAOA,UAAU,eAAe;CAExB;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyChG"}
|