@ketrics/ketrics-cli 0.1.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 +326 -0
- package/dist/bin/ketrics.d.ts +8 -0
- package/dist/bin/ketrics.d.ts.map +1 -0
- package/dist/bin/ketrics.js +12 -0
- package/dist/bin/ketrics.js.map +1 -0
- package/dist/src/cli.d.ts +11 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +77 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/commands/build.d.ts +10 -0
- package/dist/src/commands/build.d.ts.map +1 -0
- package/dist/src/commands/build.js +35 -0
- package/dist/src/commands/build.js.map +1 -0
- package/dist/src/commands/create.d.ts +11 -0
- package/dist/src/commands/create.d.ts.map +1 -0
- package/dist/src/commands/create.js +170 -0
- package/dist/src/commands/create.js.map +1 -0
- package/dist/src/commands/deploy.d.ts +11 -0
- package/dist/src/commands/deploy.d.ts.map +1 -0
- package/dist/src/commands/deploy.js +105 -0
- package/dist/src/commands/deploy.js.map +1 -0
- package/dist/src/commands/run.d.ts +11 -0
- package/dist/src/commands/run.d.ts.map +1 -0
- package/dist/src/commands/run.js +236 -0
- package/dist/src/commands/run.js.map +1 -0
- package/dist/src/commands/validate.d.ts +10 -0
- package/dist/src/commands/validate.d.ts.map +1 -0
- package/dist/src/commands/validate.js +46 -0
- package/dist/src/commands/validate.js.map +1 -0
- package/dist/src/index.d.ts +13 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +29 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/services/api-client.d.ts +14 -0
- package/dist/src/services/api-client.d.ts.map +1 -0
- package/dist/src/services/api-client.js +57 -0
- package/dist/src/services/api-client.js.map +1 -0
- package/dist/src/services/build-service.d.ts +40 -0
- package/dist/src/services/build-service.d.ts.map +1 -0
- package/dist/src/services/build-service.js +130 -0
- package/dist/src/services/build-service.js.map +1 -0
- package/dist/src/services/config-service.d.ts +35 -0
- package/dist/src/services/config-service.d.ts.map +1 -0
- package/dist/src/services/config-service.js +204 -0
- package/dist/src/services/config-service.js.map +1 -0
- package/dist/src/services/template-service.d.ts +51 -0
- package/dist/src/services/template-service.d.ts.map +1 -0
- package/dist/src/services/template-service.js +214 -0
- package/dist/src/services/template-service.js.map +1 -0
- package/dist/src/services/upload-service.d.ts +13 -0
- package/dist/src/services/upload-service.d.ts.map +1 -0
- package/dist/src/services/upload-service.js +54 -0
- package/dist/src/services/upload-service.js.map +1 -0
- package/dist/src/services/zip-service.d.ts +55 -0
- package/dist/src/services/zip-service.d.ts.map +1 -0
- package/dist/src/services/zip-service.js +219 -0
- package/dist/src/services/zip-service.js.map +1 -0
- package/dist/src/types/index.d.ts +188 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +50 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/utils/logger.d.ts +52 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js +95 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/spinner.d.ts +15 -0
- package/dist/src/utils/spinner.d.ts.map +1 -0
- package/dist/src/utils/spinner.js +38 -0
- package/dist/src/utils/spinner.js.map +1 -0
- package/package.json +47 -0
- package/templates/ketrics-app-v1/.env.example +17 -0
- package/templates/ketrics-app-v1/README.md +134 -0
- package/templates/ketrics-app-v1/backend/package-lock.json +716 -0
- package/templates/ketrics-app-v1/backend/package.json +18 -0
- package/templates/ketrics-app-v1/backend/src/index.ts +41 -0
- package/templates/ketrics-app-v1/backend/src/volume.ts +48 -0
- package/templates/ketrics-app-v1/backend/tsconfig.json +16 -0
- package/templates/ketrics-app-v1/frontend/index.html +13 -0
- package/templates/ketrics-app-v1/frontend/package-lock.json +1981 -0
- package/templates/ketrics-app-v1/frontend/package.json +24 -0
- package/templates/ketrics-app-v1/frontend/src/App.css +121 -0
- package/templates/ketrics-app-v1/frontend/src/App.tsx +109 -0
- package/templates/ketrics-app-v1/frontend/src/main.tsx +10 -0
- package/templates/ketrics-app-v1/frontend/src/services/index.ts +55 -0
- package/templates/ketrics-app-v1/frontend/tsconfig.json +21 -0
- package/templates/ketrics-app-v1/frontend/tsconfig.node.json +11 -0
- package/templates/ketrics-app-v1/frontend/vite.config.ts +11 -0
- package/templates/ketrics-app-v1/ketrics.config.json +10 -0
- package/templates/ketrics-app-v1/tests/test.echo.json +13 -0
- package/templates/ketrics-app-v1/tests/test.greet.json +11 -0
- package/templates/ketrics-app-v1/tests/test.info.json +9 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deploy Command
|
|
3
|
+
*
|
|
4
|
+
* Builds frontend and backend, then packages and uploads to Ketrics platform.
|
|
5
|
+
*/
|
|
6
|
+
import type { DeployOptions } from '../types';
|
|
7
|
+
/**
|
|
8
|
+
* Execute deploy command
|
|
9
|
+
*/
|
|
10
|
+
export declare function deployCommand(options: DeployOptions): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=deploy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,UAAU,CAAC;AAEhE;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkIzE"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Deploy Command
|
|
4
|
+
*
|
|
5
|
+
* Builds frontend and backend, then packages and uploads to Ketrics platform.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.deployCommand = deployCommand;
|
|
9
|
+
const logger_1 = require("../utils/logger");
|
|
10
|
+
const spinner_1 = require("../utils/spinner");
|
|
11
|
+
const config_service_1 = require("../services/config-service");
|
|
12
|
+
const api_client_1 = require("../services/api-client");
|
|
13
|
+
const zip_service_1 = require("../services/zip-service");
|
|
14
|
+
const upload_service_1 = require("../services/upload-service");
|
|
15
|
+
const build_service_1 = require("../services/build-service");
|
|
16
|
+
/**
|
|
17
|
+
* Execute deploy command
|
|
18
|
+
*/
|
|
19
|
+
async function deployCommand(options) {
|
|
20
|
+
const startTime = Date.now();
|
|
21
|
+
const cwd = process.cwd();
|
|
22
|
+
logger_1.logger.header('Ketrics CLI v1.0.0');
|
|
23
|
+
try {
|
|
24
|
+
// Load environment configuration
|
|
25
|
+
const envConfig = await (0, spinner_1.withSpinner)('Loading environment configuration', async () => (0, config_service_1.loadEnvConfig)(options.env), 'Loaded environment configuration');
|
|
26
|
+
// Validate deployment token format
|
|
27
|
+
await (0, spinner_1.withSpinner)('Validating deployment token', async () => {
|
|
28
|
+
if (!envConfig.KETRICS_TOKEN.startsWith('ktd_')) {
|
|
29
|
+
throw new Error('Invalid token format. Token should start with "ktd_"');
|
|
30
|
+
}
|
|
31
|
+
}, 'Validated deployment token');
|
|
32
|
+
// Build frontend and backend
|
|
33
|
+
logger_1.logger.newline();
|
|
34
|
+
logger_1.logger.info('Building frontend and backend...');
|
|
35
|
+
logger_1.logger.newline();
|
|
36
|
+
let buildResult;
|
|
37
|
+
try {
|
|
38
|
+
buildResult = (0, build_service_1.buildAll)(cwd);
|
|
39
|
+
logger_1.logger.success('Frontend and backend built successfully');
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
logger_1.logger.error(error.message);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
// Create ZIP from builds
|
|
46
|
+
const zipResult = await (0, spinner_1.withSpinner)('Creating deployment ZIP archive', async () => (0, zip_service_1.createDeploymentZipBundle)(buildResult.frontendDistPath, buildResult.backendDistPath), 'Created deployment ZIP archive');
|
|
47
|
+
logger_1.logger.success(`ZIP archive: ${(0, zip_service_1.formatSize)(zipResult.zipSize)} from ${zipResult.files.length} files`);
|
|
48
|
+
// Dry run - show files and exit
|
|
49
|
+
if (options.dryRun) {
|
|
50
|
+
logger_1.logger.newline();
|
|
51
|
+
logger_1.logger.warn('Dry run - no files were uploaded');
|
|
52
|
+
logger_1.logger.newline();
|
|
53
|
+
logger_1.logger.log('Files to deploy:');
|
|
54
|
+
// Group files by prefix
|
|
55
|
+
const frontendFiles = zipResult.files.filter((f) => f.relativePath.startsWith('frontend/'));
|
|
56
|
+
const backendFiles = zipResult.files.filter((f) => f.relativePath.startsWith('backend/'));
|
|
57
|
+
logger_1.logger.log(' frontend/');
|
|
58
|
+
frontendFiles.forEach((file) => {
|
|
59
|
+
const shortPath = file.relativePath.replace('frontend/', '');
|
|
60
|
+
logger_1.logger.file(` ${shortPath}`, (0, zip_service_1.formatSize)(file.size));
|
|
61
|
+
});
|
|
62
|
+
logger_1.logger.newline();
|
|
63
|
+
logger_1.logger.log(' backend/');
|
|
64
|
+
backendFiles.forEach((file) => {
|
|
65
|
+
const shortPath = file.relativePath.replace('backend/', '');
|
|
66
|
+
logger_1.logger.file(` ${shortPath}`, (0, zip_service_1.formatSize)(file.size));
|
|
67
|
+
});
|
|
68
|
+
logger_1.logger.newline();
|
|
69
|
+
logger_1.logger.keyValue('Total files', String(zipResult.files.length));
|
|
70
|
+
logger_1.logger.keyValue('Frontend files', String(frontendFiles.length));
|
|
71
|
+
logger_1.logger.keyValue('Backend files', String(backendFiles.length));
|
|
72
|
+
logger_1.logger.keyValue('Source size', (0, zip_service_1.formatSize)(zipResult.totalSourceSize));
|
|
73
|
+
logger_1.logger.keyValue('ZIP size', (0, zip_service_1.formatSize)(zipResult.zipSize));
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
// Initiate deployment
|
|
77
|
+
const deployResponse = await (0, spinner_1.withSpinner)('Initiating deployment', async () => (0, api_client_1.initiateDeploy)(envConfig), 'Initiated deployment');
|
|
78
|
+
// Upload to S3
|
|
79
|
+
await (0, spinner_1.withSpinner)('Uploading to S3', async () => (0, upload_service_1.uploadToS3)(deployResponse.data.uploadUrl, zipResult.buffer), 'Uploaded to S3');
|
|
80
|
+
// Calculate duration
|
|
81
|
+
const duration = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
82
|
+
// Show success
|
|
83
|
+
const result = {
|
|
84
|
+
success: true,
|
|
85
|
+
deploymentId: deployResponse.data.deploymentId,
|
|
86
|
+
filesDeployed: zipResult.files.length,
|
|
87
|
+
totalSize: zipResult.zipSize,
|
|
88
|
+
s3Key: deployResponse.data.s3Key,
|
|
89
|
+
};
|
|
90
|
+
logger_1.logger.box('Deployment successful!', [
|
|
91
|
+
`Deployment ID: ${result.deploymentId}`,
|
|
92
|
+
`Files: ${result.filesDeployed}`,
|
|
93
|
+
`Size: ${(0, zip_service_1.formatSize)(result.totalSize)}`,
|
|
94
|
+
`Duration: ${duration}s`,
|
|
95
|
+
'',
|
|
96
|
+
'Your deployment is being processed by Ketrics.',
|
|
97
|
+
]);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
logger_1.logger.newline();
|
|
101
|
+
logger_1.logger.error(error.message);
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# 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,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run Command
|
|
3
|
+
*
|
|
4
|
+
* Executes API requests from JSON configuration files with variable interpolation.
|
|
5
|
+
*/
|
|
6
|
+
import { RunOptions } from '../types';
|
|
7
|
+
/**
|
|
8
|
+
* Execute the run command
|
|
9
|
+
*/
|
|
10
|
+
export declare function runCommand(jsonFilePath: string, options: RunOptions): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,EAKL,UAAU,EACX,MAAM,UAAU,CAAC;AA6JlB;;GAEG;AACH,wBAAsB,UAAU,CAC9B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,IAAI,CAAC,CAkFf"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Run Command
|
|
4
|
+
*
|
|
5
|
+
* Executes API requests from JSON configuration files with variable interpolation.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
42
|
+
};
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.runCommand = runCommand;
|
|
45
|
+
const fs = __importStar(require("fs"));
|
|
46
|
+
const path = __importStar(require("path"));
|
|
47
|
+
const axios_1 = __importDefault(require("axios"));
|
|
48
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
49
|
+
const logger_1 = require("../utils/logger");
|
|
50
|
+
const spinner_1 = require("../utils/spinner");
|
|
51
|
+
const config_service_1 = require("../services/config-service");
|
|
52
|
+
const types_1 = require("../types");
|
|
53
|
+
/**
|
|
54
|
+
* Interpolate template variables in a string
|
|
55
|
+
* Supports: {{tenantId}}, {{applicationId}}, {{token}}
|
|
56
|
+
*/
|
|
57
|
+
function interpolateString(template, vars) {
|
|
58
|
+
return template.replace(/\{\{(\w+)\}\}/g, (match, varName) => {
|
|
59
|
+
if (varName in vars) {
|
|
60
|
+
return vars[varName];
|
|
61
|
+
}
|
|
62
|
+
logger_1.logger.warn(`Unknown variable: ${match}`);
|
|
63
|
+
return match;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Recursively interpolate all string values in an object/array
|
|
68
|
+
*/
|
|
69
|
+
function interpolateObject(obj, vars) {
|
|
70
|
+
if (typeof obj === 'string') {
|
|
71
|
+
return interpolateString(obj, vars);
|
|
72
|
+
}
|
|
73
|
+
if (Array.isArray(obj)) {
|
|
74
|
+
return obj.map((item) => interpolateObject(item, vars));
|
|
75
|
+
}
|
|
76
|
+
if (obj && typeof obj === 'object') {
|
|
77
|
+
const result = {};
|
|
78
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
79
|
+
result[key] = interpolateObject(value, vars);
|
|
80
|
+
}
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
return obj;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Load and parse the JSON configuration file
|
|
87
|
+
*/
|
|
88
|
+
function loadRunFile(filePath) {
|
|
89
|
+
const absolutePath = path.isAbsolute(filePath)
|
|
90
|
+
? filePath
|
|
91
|
+
: path.join(process.cwd(), filePath);
|
|
92
|
+
if (!fs.existsSync(absolutePath)) {
|
|
93
|
+
throw new Error(`JSON file not found: ${absolutePath}`);
|
|
94
|
+
}
|
|
95
|
+
const content = fs.readFileSync(absolutePath, 'utf-8');
|
|
96
|
+
let parsed;
|
|
97
|
+
try {
|
|
98
|
+
parsed = JSON.parse(content);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
throw new Error(`Invalid JSON in file: ${absolutePath}`);
|
|
102
|
+
}
|
|
103
|
+
const result = types_1.runFileSchema.safeParse(parsed);
|
|
104
|
+
if (!result.success) {
|
|
105
|
+
const errors = result.error.errors
|
|
106
|
+
.map((e) => ` - ${e.path.join('.')}: ${e.message}`)
|
|
107
|
+
.join('\n');
|
|
108
|
+
throw new Error(`Invalid run file format:\n${errors}`);
|
|
109
|
+
}
|
|
110
|
+
return result.data;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Validate env config has KETRICS_AUTH_TOKEN and KETRICS_RUNTIME_URL (required for run command)
|
|
114
|
+
*/
|
|
115
|
+
function validateRunEnvConfig(envConfig) {
|
|
116
|
+
const result = types_1.runEnvConfigSchema.safeParse(envConfig);
|
|
117
|
+
if (!result.success) {
|
|
118
|
+
const errors = result.error.errors
|
|
119
|
+
.map((e) => ` - ${e.path.join('.')}: ${e.message}`)
|
|
120
|
+
.join('\n');
|
|
121
|
+
throw new Error(`Missing required environment variables for run command:\n${errors}`);
|
|
122
|
+
}
|
|
123
|
+
return result.data;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Create variable map from environment configuration
|
|
127
|
+
*/
|
|
128
|
+
function createVariableMap(envConfig) {
|
|
129
|
+
return {
|
|
130
|
+
tenantId: envConfig.KETRICS_TENANT_ID,
|
|
131
|
+
applicationId: envConfig.KETRICS_APPLICATION_ID,
|
|
132
|
+
token: envConfig.KETRICS_AUTH_TOKEN,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Display request details
|
|
137
|
+
*/
|
|
138
|
+
function displayRequest(method, url, headers, body) {
|
|
139
|
+
logger_1.logger.newline();
|
|
140
|
+
logger_1.logger.info(`${chalk_1.default.bold(method)} ${url}`);
|
|
141
|
+
if (Object.keys(headers).length > 0) {
|
|
142
|
+
logger_1.logger.newline();
|
|
143
|
+
logger_1.logger.log(chalk_1.default.gray('Headers:'));
|
|
144
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
145
|
+
// Mask authorization header value for security
|
|
146
|
+
const displayValue = key.toLowerCase() === 'authorization'
|
|
147
|
+
? value.substring(0, 20) + '...'
|
|
148
|
+
: value;
|
|
149
|
+
logger_1.logger.indent(`${key}: ${displayValue}`, 1);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (body && Object.keys(body).length > 0) {
|
|
153
|
+
logger_1.logger.newline();
|
|
154
|
+
logger_1.logger.log(chalk_1.default.gray('Body:'));
|
|
155
|
+
logger_1.logger.indent(JSON.stringify(body, null, 2), 1);
|
|
156
|
+
}
|
|
157
|
+
logger_1.logger.newline();
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Display response details
|
|
161
|
+
*/
|
|
162
|
+
function displayResponse(status, data) {
|
|
163
|
+
const statusColor = status >= 200 && status < 300
|
|
164
|
+
? chalk_1.default.green
|
|
165
|
+
: status >= 400
|
|
166
|
+
? chalk_1.default.red
|
|
167
|
+
: chalk_1.default.yellow;
|
|
168
|
+
logger_1.logger.log(chalk_1.default.gray('Response:'));
|
|
169
|
+
logger_1.logger.indent(`Status: ${statusColor(status)}`, 1);
|
|
170
|
+
logger_1.logger.newline();
|
|
171
|
+
logger_1.logger.log(chalk_1.default.gray('Body:'));
|
|
172
|
+
console.log(JSON.stringify(data, null, 2));
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Execute the run command
|
|
176
|
+
*/
|
|
177
|
+
async function runCommand(jsonFilePath, options) {
|
|
178
|
+
const startTime = Date.now();
|
|
179
|
+
logger_1.logger.header('Ketrics CLI - Run');
|
|
180
|
+
try {
|
|
181
|
+
// 1. Load environment configuration
|
|
182
|
+
const baseEnvConfig = await (0, spinner_1.withSpinner)('Loading environment configuration', async () => (0, config_service_1.loadEnvConfig)(options.env), 'Loaded environment configuration');
|
|
183
|
+
// 2. Validate that KETRICS_AUTH_TOKEN is present
|
|
184
|
+
const envConfig = validateRunEnvConfig(baseEnvConfig);
|
|
185
|
+
// 3. Load and validate JSON file
|
|
186
|
+
const runFile = await (0, spinner_1.withSpinner)(`Loading ${jsonFilePath}`, async () => loadRunFile(jsonFilePath), `Loaded ${jsonFilePath}`);
|
|
187
|
+
// 4. Create variable map from env config
|
|
188
|
+
const vars = createVariableMap(envConfig);
|
|
189
|
+
// 5. Interpolate all variables
|
|
190
|
+
const interpolatedEndpoint = interpolateString(runFile.endpoint, vars);
|
|
191
|
+
const interpolatedHeaders = interpolateObject(runFile.headers || {}, vars);
|
|
192
|
+
const interpolatedBody = interpolateObject(runFile.body || {}, vars);
|
|
193
|
+
// 6. Construct full URL using runtime URL
|
|
194
|
+
const fullUrl = `${envConfig.KETRICS_RUNTIME_URL}${interpolatedEndpoint}`;
|
|
195
|
+
// 7. Display request details
|
|
196
|
+
displayRequest(runFile.method, fullUrl, interpolatedHeaders, interpolatedBody);
|
|
197
|
+
// 8. Execute HTTP request
|
|
198
|
+
const response = await (0, spinner_1.withSpinner)('Executing request', async () => {
|
|
199
|
+
return (0, axios_1.default)({
|
|
200
|
+
method: runFile.method.toLowerCase(),
|
|
201
|
+
url: fullUrl,
|
|
202
|
+
headers: interpolatedHeaders,
|
|
203
|
+
data: runFile.method !== 'GET' ? interpolatedBody : undefined,
|
|
204
|
+
timeout: 30000,
|
|
205
|
+
validateStatus: () => true, // Don't throw on non-2xx responses
|
|
206
|
+
});
|
|
207
|
+
}, 'Request completed');
|
|
208
|
+
// 9. Display response
|
|
209
|
+
logger_1.logger.newline();
|
|
210
|
+
displayResponse(response.status, response.data);
|
|
211
|
+
// 10. Show duration
|
|
212
|
+
const duration = ((Date.now() - startTime) / 1000).toFixed(2);
|
|
213
|
+
logger_1.logger.newline();
|
|
214
|
+
logger_1.logger.info(`Completed in ${duration}s`);
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
logger_1.logger.newline();
|
|
218
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
219
|
+
const axiosError = error;
|
|
220
|
+
if (axiosError.code === 'ECONNREFUSED') {
|
|
221
|
+
logger_1.logger.error(`Connection refused: ${axiosError.config?.url}`);
|
|
222
|
+
}
|
|
223
|
+
else if (axiosError.code === 'ETIMEDOUT') {
|
|
224
|
+
logger_1.logger.error('Request timed out');
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
logger_1.logger.error(`Request failed: ${axiosError.message}`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
logger_1.logger.error(error.message);
|
|
232
|
+
}
|
|
233
|
+
process.exit(1);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate Command
|
|
3
|
+
*
|
|
4
|
+
* Validates ketrics.config.json and .env files.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Execute validate command
|
|
8
|
+
*/
|
|
9
|
+
export declare function validateCommand(configPath?: string, envPath?: string): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/validate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,wBAAsB,eAAe,CACnC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAkCf"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Validate Command
|
|
4
|
+
*
|
|
5
|
+
* Validates ketrics.config.json and .env files.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.validateCommand = validateCommand;
|
|
9
|
+
const logger_1 = require("../utils/logger");
|
|
10
|
+
const config_service_1 = require("../services/config-service");
|
|
11
|
+
/**
|
|
12
|
+
* Execute validate command
|
|
13
|
+
*/
|
|
14
|
+
async function validateCommand(configPath, envPath) {
|
|
15
|
+
logger_1.logger.info('Validating configuration...');
|
|
16
|
+
logger_1.logger.newline();
|
|
17
|
+
const result = (0, config_service_1.validateConfig)(configPath, envPath);
|
|
18
|
+
// Show errors
|
|
19
|
+
if (result.errors.length > 0) {
|
|
20
|
+
logger_1.logger.error('Configuration errors found:');
|
|
21
|
+
result.errors.forEach((error) => {
|
|
22
|
+
logger_1.logger.indent(`- ${error}`, 1);
|
|
23
|
+
});
|
|
24
|
+
logger_1.logger.newline();
|
|
25
|
+
}
|
|
26
|
+
// Show warnings
|
|
27
|
+
if (result.warnings.length > 0) {
|
|
28
|
+
logger_1.logger.warn('Configuration warnings:');
|
|
29
|
+
result.warnings.forEach((warning) => {
|
|
30
|
+
logger_1.logger.indent(`- ${warning}`, 1);
|
|
31
|
+
});
|
|
32
|
+
logger_1.logger.newline();
|
|
33
|
+
}
|
|
34
|
+
// Show result
|
|
35
|
+
if (result.valid) {
|
|
36
|
+
logger_1.logger.success('Configuration is valid!');
|
|
37
|
+
if (result.warnings.length > 0) {
|
|
38
|
+
logger_1.logger.info('Consider addressing the warnings above.');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
logger_1.logger.error('Configuration is invalid. Please fix the errors above.');
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/validate.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAQH,0CAqCC;AA3CD,4CAAyC;AACzC,+DAA4D;AAE5D;;GAEG;AACI,KAAK,UAAU,eAAe,CACnC,UAAmB,EACnB,OAAgB;IAEhB,eAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC3C,eAAM,CAAC,OAAO,EAAE,CAAC;IAEjB,MAAM,MAAM,GAAG,IAAA,+BAAc,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAEnD,cAAc;IACd,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,eAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9B,eAAM,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,eAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,gBAAgB;IAChB,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,eAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACvC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAClC,eAAM,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,eAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,cAAc;IACd,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,eAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,eAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,eAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ketrics CLI
|
|
3
|
+
*
|
|
4
|
+
* Main exports for programmatic usage.
|
|
5
|
+
*/
|
|
6
|
+
export * from './types';
|
|
7
|
+
export * from './services/config-service';
|
|
8
|
+
export * from './services/api-client';
|
|
9
|
+
export * from './services/zip-service';
|
|
10
|
+
export * from './services/upload-service';
|
|
11
|
+
export * from './services/template-service';
|
|
12
|
+
export * from './services/build-service';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Ketrics CLI
|
|
4
|
+
*
|
|
5
|
+
* Main exports for programmatic usage.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
__exportStar(require("./types"), exports);
|
|
23
|
+
__exportStar(require("./services/config-service"), exports);
|
|
24
|
+
__exportStar(require("./services/api-client"), exports);
|
|
25
|
+
__exportStar(require("./services/zip-service"), exports);
|
|
26
|
+
__exportStar(require("./services/upload-service"), exports);
|
|
27
|
+
__exportStar(require("./services/template-service"), exports);
|
|
28
|
+
__exportStar(require("./services/build-service"), exports);
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,4DAA0C;AAC1C,wDAAsC;AACtC,yDAAuC;AACvC,4DAA0C;AAC1C,8DAA4C;AAC5C,2DAAyC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Client Service
|
|
3
|
+
*
|
|
4
|
+
* HTTP client for communicating with Ketrics Control Plane API.
|
|
5
|
+
*/
|
|
6
|
+
import type { EnvConfig, DeployResponse } from "../types";
|
|
7
|
+
/**
|
|
8
|
+
* Initiate a deployment by requesting a presigned URL
|
|
9
|
+
*
|
|
10
|
+
* @param envConfig - Environment configuration with token and API URL
|
|
11
|
+
* @returns Deploy response with presigned URL
|
|
12
|
+
*/
|
|
13
|
+
export declare function initiateDeploy(envConfig: EnvConfig): Promise<DeployResponse>;
|
|
14
|
+
//# sourceMappingURL=api-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../src/services/api-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAW1D;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAiDlF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* API Client Service
|
|
4
|
+
*
|
|
5
|
+
* HTTP client for communicating with Ketrics Control Plane API.
|
|
6
|
+
*/
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.initiateDeploy = initiateDeploy;
|
|
12
|
+
const axios_1 = __importDefault(require("axios"));
|
|
13
|
+
/**
|
|
14
|
+
* Initiate a deployment by requesting a presigned URL
|
|
15
|
+
*
|
|
16
|
+
* @param envConfig - Environment configuration with token and API URL
|
|
17
|
+
* @returns Deploy response with presigned URL
|
|
18
|
+
*/
|
|
19
|
+
async function initiateDeploy(envConfig) {
|
|
20
|
+
const url = `${envConfig.KETRICS_API_URL}/tenants/${envConfig.KETRICS_TENANT_ID}/applications/${envConfig.KETRICS_APPLICATION_ID}/deploy`;
|
|
21
|
+
console.log("Initiating deploy to URL:", url);
|
|
22
|
+
try {
|
|
23
|
+
const response = await axios_1.default.post(url, {}, {
|
|
24
|
+
headers: {
|
|
25
|
+
Authorization: `Bearer ${envConfig.KETRICS_TOKEN}`,
|
|
26
|
+
"Content-Type": "application/json",
|
|
27
|
+
},
|
|
28
|
+
timeout: 30000, // 30 second timeout
|
|
29
|
+
});
|
|
30
|
+
return response.data;
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
34
|
+
const axiosError = error;
|
|
35
|
+
if (axiosError.response) {
|
|
36
|
+
const status = axiosError.response.status;
|
|
37
|
+
const data = axiosError.response.data;
|
|
38
|
+
switch (status) {
|
|
39
|
+
case 401:
|
|
40
|
+
throw new Error("Authentication failed: Invalid or expired deployment token.\n" + "Please check your KETRICS_TOKEN in the .env file.");
|
|
41
|
+
case 403:
|
|
42
|
+
throw new Error("Authorization failed: Token does not have access to this application.\n" +
|
|
43
|
+
"Please verify KETRICS_TENANT_ID and KETRICS_APPLICATION_ID.");
|
|
44
|
+
case 404:
|
|
45
|
+
throw new Error("Application not found. Please verify KETRICS_APPLICATION_ID.");
|
|
46
|
+
default:
|
|
47
|
+
throw new Error(`API error (${status}): ${data?.message || data?.error || "Unknown error"}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else if (axiosError.request) {
|
|
51
|
+
throw new Error(`Network error: Could not connect to ${envConfig.KETRICS_API_URL}\n` + "Please check your internet connection and KETRICS_API_URL.");
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../src/services/api-client.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AAoBH,wCAiDC;AAnED,kDAA0C;AAY1C;;;;;GAKG;AACI,KAAK,UAAU,cAAc,CAAC,SAAoB;IACvD,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,eAAe,YAAY,SAAS,CAAC,iBAAiB,iBAAiB,SAAS,CAAC,sBAAsB,SAAS,CAAC;IAE1I,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,GAAG,EACH,EAAE,EACF;YACE,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,SAAS,CAAC,aAAa,EAAE;gBAClD,cAAc,EAAE,kBAAkB;aACnC;YACD,OAAO,EAAE,KAAK,EAAE,oBAAoB;SACrC,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,KAAqC,CAAC;YAEzD,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAEtC,QAAQ,MAAM,EAAE,CAAC;oBACf,KAAK,GAAG;wBACN,MAAM,IAAI,KAAK,CAAC,+DAA+D,GAAG,mDAAmD,CAAC,CAAC;oBACzI,KAAK,GAAG;wBACN,MAAM,IAAI,KAAK,CACb,yEAAyE;4BACvE,6DAA6D,CAChE,CAAC;oBACJ,KAAK,GAAG;wBACN,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;oBAClF;wBACE,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,MAAM,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;gBACjG,CAAC;YACH,CAAC;iBAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CACb,uCAAuC,SAAS,CAAC,eAAe,IAAI,GAAG,4DAA4D,CACpI,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build Service
|
|
3
|
+
*
|
|
4
|
+
* Handles building frontend and backend applications before deployment.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Build validation result
|
|
8
|
+
*/
|
|
9
|
+
export interface BuildValidation {
|
|
10
|
+
valid: boolean;
|
|
11
|
+
errors: string[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Validate that a directory exists and has node_modules
|
|
15
|
+
*/
|
|
16
|
+
export declare function validateBuildDirectory(dir: string, name: string): BuildValidation;
|
|
17
|
+
/**
|
|
18
|
+
* Run npm build in a directory
|
|
19
|
+
*/
|
|
20
|
+
export declare function runBuild(dir: string, name: string): void;
|
|
21
|
+
/**
|
|
22
|
+
* Get the dist directory path for a build
|
|
23
|
+
*/
|
|
24
|
+
export declare function getDistPath(dir: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Check if dist directory exists after build
|
|
27
|
+
*/
|
|
28
|
+
export declare function validateDistDirectory(dir: string, name: string): void;
|
|
29
|
+
/**
|
|
30
|
+
* Build result with paths
|
|
31
|
+
*/
|
|
32
|
+
export interface BuildResult {
|
|
33
|
+
frontendDistPath: string;
|
|
34
|
+
backendDistPath: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Build both frontend and backend
|
|
38
|
+
*/
|
|
39
|
+
export declare function buildAll(projectDir: string): BuildResult;
|
|
40
|
+
//# sourceMappingURL=build-service.d.ts.map
|