@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.
Files changed (91) hide show
  1. package/README.md +326 -0
  2. package/dist/bin/ketrics.d.ts +8 -0
  3. package/dist/bin/ketrics.d.ts.map +1 -0
  4. package/dist/bin/ketrics.js +12 -0
  5. package/dist/bin/ketrics.js.map +1 -0
  6. package/dist/src/cli.d.ts +11 -0
  7. package/dist/src/cli.d.ts.map +1 -0
  8. package/dist/src/cli.js +77 -0
  9. package/dist/src/cli.js.map +1 -0
  10. package/dist/src/commands/build.d.ts +10 -0
  11. package/dist/src/commands/build.d.ts.map +1 -0
  12. package/dist/src/commands/build.js +35 -0
  13. package/dist/src/commands/build.js.map +1 -0
  14. package/dist/src/commands/create.d.ts +11 -0
  15. package/dist/src/commands/create.d.ts.map +1 -0
  16. package/dist/src/commands/create.js +170 -0
  17. package/dist/src/commands/create.js.map +1 -0
  18. package/dist/src/commands/deploy.d.ts +11 -0
  19. package/dist/src/commands/deploy.d.ts.map +1 -0
  20. package/dist/src/commands/deploy.js +105 -0
  21. package/dist/src/commands/deploy.js.map +1 -0
  22. package/dist/src/commands/run.d.ts +11 -0
  23. package/dist/src/commands/run.d.ts.map +1 -0
  24. package/dist/src/commands/run.js +236 -0
  25. package/dist/src/commands/run.js.map +1 -0
  26. package/dist/src/commands/validate.d.ts +10 -0
  27. package/dist/src/commands/validate.d.ts.map +1 -0
  28. package/dist/src/commands/validate.js +46 -0
  29. package/dist/src/commands/validate.js.map +1 -0
  30. package/dist/src/index.d.ts +13 -0
  31. package/dist/src/index.d.ts.map +1 -0
  32. package/dist/src/index.js +29 -0
  33. package/dist/src/index.js.map +1 -0
  34. package/dist/src/services/api-client.d.ts +14 -0
  35. package/dist/src/services/api-client.d.ts.map +1 -0
  36. package/dist/src/services/api-client.js +57 -0
  37. package/dist/src/services/api-client.js.map +1 -0
  38. package/dist/src/services/build-service.d.ts +40 -0
  39. package/dist/src/services/build-service.d.ts.map +1 -0
  40. package/dist/src/services/build-service.js +130 -0
  41. package/dist/src/services/build-service.js.map +1 -0
  42. package/dist/src/services/config-service.d.ts +35 -0
  43. package/dist/src/services/config-service.d.ts.map +1 -0
  44. package/dist/src/services/config-service.js +204 -0
  45. package/dist/src/services/config-service.js.map +1 -0
  46. package/dist/src/services/template-service.d.ts +51 -0
  47. package/dist/src/services/template-service.d.ts.map +1 -0
  48. package/dist/src/services/template-service.js +214 -0
  49. package/dist/src/services/template-service.js.map +1 -0
  50. package/dist/src/services/upload-service.d.ts +13 -0
  51. package/dist/src/services/upload-service.d.ts.map +1 -0
  52. package/dist/src/services/upload-service.js +54 -0
  53. package/dist/src/services/upload-service.js.map +1 -0
  54. package/dist/src/services/zip-service.d.ts +55 -0
  55. package/dist/src/services/zip-service.d.ts.map +1 -0
  56. package/dist/src/services/zip-service.js +219 -0
  57. package/dist/src/services/zip-service.js.map +1 -0
  58. package/dist/src/types/index.d.ts +188 -0
  59. package/dist/src/types/index.d.ts.map +1 -0
  60. package/dist/src/types/index.js +50 -0
  61. package/dist/src/types/index.js.map +1 -0
  62. package/dist/src/utils/logger.d.ts +52 -0
  63. package/dist/src/utils/logger.d.ts.map +1 -0
  64. package/dist/src/utils/logger.js +95 -0
  65. package/dist/src/utils/logger.js.map +1 -0
  66. package/dist/src/utils/spinner.d.ts +15 -0
  67. package/dist/src/utils/spinner.d.ts.map +1 -0
  68. package/dist/src/utils/spinner.js +38 -0
  69. package/dist/src/utils/spinner.js.map +1 -0
  70. package/package.json +47 -0
  71. package/templates/ketrics-app-v1/.env.example +17 -0
  72. package/templates/ketrics-app-v1/README.md +134 -0
  73. package/templates/ketrics-app-v1/backend/package-lock.json +716 -0
  74. package/templates/ketrics-app-v1/backend/package.json +18 -0
  75. package/templates/ketrics-app-v1/backend/src/index.ts +41 -0
  76. package/templates/ketrics-app-v1/backend/src/volume.ts +48 -0
  77. package/templates/ketrics-app-v1/backend/tsconfig.json +16 -0
  78. package/templates/ketrics-app-v1/frontend/index.html +13 -0
  79. package/templates/ketrics-app-v1/frontend/package-lock.json +1981 -0
  80. package/templates/ketrics-app-v1/frontend/package.json +24 -0
  81. package/templates/ketrics-app-v1/frontend/src/App.css +121 -0
  82. package/templates/ketrics-app-v1/frontend/src/App.tsx +109 -0
  83. package/templates/ketrics-app-v1/frontend/src/main.tsx +10 -0
  84. package/templates/ketrics-app-v1/frontend/src/services/index.ts +55 -0
  85. package/templates/ketrics-app-v1/frontend/tsconfig.json +21 -0
  86. package/templates/ketrics-app-v1/frontend/tsconfig.node.json +11 -0
  87. package/templates/ketrics-app-v1/frontend/vite.config.ts +11 -0
  88. package/templates/ketrics-app-v1/ketrics.config.json +10 -0
  89. package/templates/ketrics-app-v1/tests/test.echo.json +13 -0
  90. package/templates/ketrics-app-v1/tests/test.greet.json +11 -0
  91. 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