@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,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Logger Utility
|
|
4
|
+
*
|
|
5
|
+
* Provides colored console output for CLI messages.
|
|
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.logger = void 0;
|
|
12
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
13
|
+
exports.logger = {
|
|
14
|
+
/**
|
|
15
|
+
* Log info message (blue)
|
|
16
|
+
*/
|
|
17
|
+
info: (message) => {
|
|
18
|
+
console.log(chalk_1.default.blue('ℹ'), message);
|
|
19
|
+
},
|
|
20
|
+
/**
|
|
21
|
+
* Log success message (green)
|
|
22
|
+
*/
|
|
23
|
+
success: (message) => {
|
|
24
|
+
console.log(chalk_1.default.green('✔'), message);
|
|
25
|
+
},
|
|
26
|
+
/**
|
|
27
|
+
* Log warning message (yellow)
|
|
28
|
+
*/
|
|
29
|
+
warn: (message) => {
|
|
30
|
+
console.log(chalk_1.default.yellow('⚠'), message);
|
|
31
|
+
},
|
|
32
|
+
/**
|
|
33
|
+
* Log error message (red)
|
|
34
|
+
*/
|
|
35
|
+
error: (message) => {
|
|
36
|
+
console.log(chalk_1.default.red('✖'), message);
|
|
37
|
+
},
|
|
38
|
+
/**
|
|
39
|
+
* Log plain message
|
|
40
|
+
*/
|
|
41
|
+
log: (message) => {
|
|
42
|
+
console.log(message);
|
|
43
|
+
},
|
|
44
|
+
/**
|
|
45
|
+
* Log newline
|
|
46
|
+
*/
|
|
47
|
+
newline: () => {
|
|
48
|
+
console.log();
|
|
49
|
+
},
|
|
50
|
+
/**
|
|
51
|
+
* Log header (bold)
|
|
52
|
+
*/
|
|
53
|
+
header: (message) => {
|
|
54
|
+
console.log();
|
|
55
|
+
console.log(chalk_1.default.bold(message));
|
|
56
|
+
console.log();
|
|
57
|
+
},
|
|
58
|
+
/**
|
|
59
|
+
* Log key-value pair
|
|
60
|
+
*/
|
|
61
|
+
keyValue: (key, value) => {
|
|
62
|
+
console.log(` ${chalk_1.default.gray(key + ':')} ${value}`);
|
|
63
|
+
},
|
|
64
|
+
/**
|
|
65
|
+
* Log indented message
|
|
66
|
+
*/
|
|
67
|
+
indent: (message, level = 1) => {
|
|
68
|
+
const indent = ' '.repeat(level);
|
|
69
|
+
console.log(`${indent}${message}`);
|
|
70
|
+
},
|
|
71
|
+
/**
|
|
72
|
+
* Log file info
|
|
73
|
+
*/
|
|
74
|
+
file: (path, size) => {
|
|
75
|
+
if (size) {
|
|
76
|
+
console.log(` ${chalk_1.default.cyan(path)} ${chalk_1.default.gray(`(${size})`)}`);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
console.log(` ${chalk_1.default.cyan(path)}`);
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
/**
|
|
83
|
+
* Log box with title
|
|
84
|
+
*/
|
|
85
|
+
box: (title, content) => {
|
|
86
|
+
console.log();
|
|
87
|
+
console.log(chalk_1.default.bold.green(` ✅ ${title}`));
|
|
88
|
+
console.log();
|
|
89
|
+
content.forEach((line) => {
|
|
90
|
+
console.log(` ${line}`);
|
|
91
|
+
});
|
|
92
|
+
console.log();
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,kDAA0B;AAEb,QAAA,MAAM,GAAG;IACpB;;OAEG;IACH,IAAI,EAAE,CAAC,OAAe,EAAQ,EAAE;QAC9B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,OAAO,EAAE,CAAC,OAAe,EAAQ,EAAE;QACjC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,IAAI,EAAE,CAAC,OAAe,EAAQ,EAAE;QAC9B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,EAAE,CAAC,OAAe,EAAQ,EAAE;QAC/B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,GAAG,EAAE,CAAC,OAAe,EAAQ,EAAE;QAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,OAAO,EAAE,GAAS,EAAE;QAClB,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,EAAE,CAAC,OAAe,EAAQ,EAAE;QAChC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,QAAQ,EAAE,CAAC,GAAW,EAAE,KAAa,EAAQ,EAAE;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,MAAM,EAAE,CAAC,OAAe,EAAE,KAAK,GAAG,CAAC,EAAQ,EAAE;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,OAAO,EAAE,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,IAAI,EAAE,CAAC,IAAY,EAAE,IAAa,EAAQ,EAAE;QAC1C,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,GAAG,EAAE,CAAC,KAAa,EAAE,OAAiB,EAAQ,EAAE;QAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spinner Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides loading spinners for long-running operations.
|
|
5
|
+
*/
|
|
6
|
+
import { Ora } from 'ora';
|
|
7
|
+
/**
|
|
8
|
+
* Create and start a spinner
|
|
9
|
+
*/
|
|
10
|
+
export declare function createSpinner(text: string): Ora;
|
|
11
|
+
/**
|
|
12
|
+
* Execute an async operation with spinner
|
|
13
|
+
*/
|
|
14
|
+
export declare function withSpinner<T>(text: string, operation: () => Promise<T>, successText?: string): Promise<T>;
|
|
15
|
+
//# sourceMappingURL=spinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../src/utils/spinner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAY,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE/B;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAK/C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,CAAC,CAWZ"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Spinner Utility
|
|
4
|
+
*
|
|
5
|
+
* Provides loading spinners for long-running operations.
|
|
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.createSpinner = createSpinner;
|
|
12
|
+
exports.withSpinner = withSpinner;
|
|
13
|
+
const ora_1 = __importDefault(require("ora"));
|
|
14
|
+
/**
|
|
15
|
+
* Create and start a spinner
|
|
16
|
+
*/
|
|
17
|
+
function createSpinner(text) {
|
|
18
|
+
return (0, ora_1.default)({
|
|
19
|
+
text,
|
|
20
|
+
spinner: 'dots',
|
|
21
|
+
}).start();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Execute an async operation with spinner
|
|
25
|
+
*/
|
|
26
|
+
async function withSpinner(text, operation, successText) {
|
|
27
|
+
const spinner = createSpinner(text);
|
|
28
|
+
try {
|
|
29
|
+
const result = await operation();
|
|
30
|
+
spinner.succeed(successText || text);
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
spinner.fail(text);
|
|
35
|
+
throw error;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../../src/utils/spinner.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AAOH,sCAKC;AAKD,kCAeC;AA9BD,8CAA+B;AAE/B;;GAEG;AACH,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,IAAA,aAAG,EAAC;QACT,IAAI;QACJ,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC,KAAK,EAAE,CAAC;AACb,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,SAA2B,EAC3B,WAAoB;IAEpB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAEpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ketrics/ketrics-cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "CLI tool for deploying applications to Ketrics platform",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"ketrics": "./dist/bin/ketrics.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"dev": "ts-node bin/ketrics.ts",
|
|
12
|
+
"clean": "rm -rf dist",
|
|
13
|
+
"prepublishOnly": "npm run build"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"ketrics",
|
|
17
|
+
"cli",
|
|
18
|
+
"deploy",
|
|
19
|
+
"serverless"
|
|
20
|
+
],
|
|
21
|
+
"author": "Ketrics",
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@inquirer/prompts": "^7.10.1",
|
|
25
|
+
"archiver": "^6.0.1",
|
|
26
|
+
"axios": "^1.6.0",
|
|
27
|
+
"chalk": "^4.1.2",
|
|
28
|
+
"commander": "^12.0.0",
|
|
29
|
+
"dotenv": "^16.3.1",
|
|
30
|
+
"glob": "^10.3.0",
|
|
31
|
+
"ora": "^5.4.1",
|
|
32
|
+
"zod": "^3.22.4"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@types/archiver": "^6.0.2",
|
|
36
|
+
"@types/node": "^20.10.0",
|
|
37
|
+
"ts-node": "^10.9.2",
|
|
38
|
+
"typescript": "^5.3.3"
|
|
39
|
+
},
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=18.0.0"
|
|
42
|
+
},
|
|
43
|
+
"files": [
|
|
44
|
+
"dist",
|
|
45
|
+
"templates"
|
|
46
|
+
]
|
|
47
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Ketrics Deployment Configuration
|
|
2
|
+
# Copy this file to .env and fill in your values
|
|
3
|
+
|
|
4
|
+
# Deployment token from Ketrics dashboard
|
|
5
|
+
KETRICS_TOKEN=ktd_your-token-id_your-secret-key
|
|
6
|
+
|
|
7
|
+
# API URL (default for production)
|
|
8
|
+
KETRICS_API_URL=https://api.ketrics.cl/api/v1
|
|
9
|
+
|
|
10
|
+
# Your tenant ID
|
|
11
|
+
KETRICS_TENANT_ID=your-tenant-uuid
|
|
12
|
+
|
|
13
|
+
# Application ID for this backend
|
|
14
|
+
KETRICS_APPLICATION_ID=your-application-uuid
|
|
15
|
+
|
|
16
|
+
# Optional: Custom authentication token (JWT) for Ketrics API
|
|
17
|
+
KETRICS_AUTH_TOKEN=your-jwt-auth-token
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Ketrics Test Application
|
|
2
|
+
|
|
3
|
+
Test applications for validating the Ketrics CLI deployment workflow.
|
|
4
|
+
|
|
5
|
+
## Structure
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
test-application/
|
|
9
|
+
├── frontend/ # React + TypeScript + Vite frontend
|
|
10
|
+
│ ├── src/
|
|
11
|
+
│ ├── ketrics.config.json
|
|
12
|
+
│ └── .env.example
|
|
13
|
+
└── backend/ # TypeScript handlers for data-plane
|
|
14
|
+
├── src/
|
|
15
|
+
├── ketrics.config.json
|
|
16
|
+
└── .env.example
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Frontend
|
|
20
|
+
|
|
21
|
+
A simple React application demonstrating:
|
|
22
|
+
|
|
23
|
+
- React + TypeScript + Vite setup
|
|
24
|
+
- Zod schema validation
|
|
25
|
+
- Deployment via Ketrics CLI
|
|
26
|
+
|
|
27
|
+
### Setup
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
cd frontend
|
|
31
|
+
npm install
|
|
32
|
+
npm run build
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Deploy
|
|
36
|
+
|
|
37
|
+
1. Copy `.env.example` to `.env` and fill in your credentials:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
cp .env.example .env
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
2. Deploy:
|
|
44
|
+
```bash
|
|
45
|
+
ketrics deploy
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Backend
|
|
49
|
+
|
|
50
|
+
TypeScript handlers compatible with Ketrics data-plane-api.
|
|
51
|
+
|
|
52
|
+
### Available Actions
|
|
53
|
+
|
|
54
|
+
| Action | Description |
|
|
55
|
+
| ----------- | ------------------------------- |
|
|
56
|
+
| `echo` | Returns payload with context |
|
|
57
|
+
| `greet` | Personalized greeting |
|
|
58
|
+
| `calculate` | Simple math operations |
|
|
59
|
+
| `fetch` | Test HTTP client |
|
|
60
|
+
| `info` | Environment and context info |
|
|
61
|
+
|
|
62
|
+
### Example Payloads
|
|
63
|
+
|
|
64
|
+
**Echo:**
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"message": "Hello, World!"
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Greet:**
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"name": "John"
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Calculate:**
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"operation": "add",
|
|
85
|
+
"a": 10,
|
|
86
|
+
"b": 5
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Fetch:**
|
|
91
|
+
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"url": "https://api.example.com/data"
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Setup
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
cd backend
|
|
102
|
+
npm install
|
|
103
|
+
npm run build
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Deploy
|
|
107
|
+
|
|
108
|
+
1. Copy `.env.example` to `.env` and fill in your credentials:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
cp .env.example .env
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
2. Deploy:
|
|
115
|
+
```bash
|
|
116
|
+
ketrics deploy
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Ketrics SDK
|
|
120
|
+
|
|
121
|
+
The backend handlers have access to the `ketrics` global object injected at runtime:
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
ketrics.tenant // { id, code, name }
|
|
125
|
+
ketrics.application // { id, code, name, version, deploymentId }
|
|
126
|
+
ketrics.user // { id, email, name, isAdmin }
|
|
127
|
+
ketrics.env // { nodeVersion, runtime, region }
|
|
128
|
+
ketrics.console // { log, error }
|
|
129
|
+
ketrics.http // { get, post }
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## License
|
|
133
|
+
|
|
134
|
+
MIT
|