@kapeta/local-cluster-service 0.0.0-96f91ef

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 (274) hide show
  1. package/.eslintrc.cjs +25 -0
  2. package/.github/workflows/check-license.yml +17 -0
  3. package/.github/workflows/main.yml +26 -0
  4. package/.prettierignore +4 -0
  5. package/.vscode/launch.json +19 -0
  6. package/CHANGELOG.md +920 -0
  7. package/LICENSE +38 -0
  8. package/README.md +36 -0
  9. package/definitions.d.ts +35 -0
  10. package/dist/cjs/index.d.ts +34 -0
  11. package/dist/cjs/index.js +263 -0
  12. package/dist/cjs/package.json +1 -0
  13. package/dist/cjs/src/RepositoryWatcher.d.ts +30 -0
  14. package/dist/cjs/src/RepositoryWatcher.js +332 -0
  15. package/dist/cjs/src/ai/aiClient.d.ts +20 -0
  16. package/dist/cjs/src/ai/aiClient.js +74 -0
  17. package/dist/cjs/src/ai/routes.d.ts +7 -0
  18. package/dist/cjs/src/ai/routes.js +37 -0
  19. package/dist/cjs/src/ai/transform.d.ts +11 -0
  20. package/dist/cjs/src/ai/transform.js +239 -0
  21. package/dist/cjs/src/ai/types.d.ts +40 -0
  22. package/dist/cjs/src/ai/types.js +2 -0
  23. package/dist/cjs/src/api.d.ts +7 -0
  24. package/dist/cjs/src/api.js +29 -0
  25. package/dist/cjs/src/assetManager.d.ts +41 -0
  26. package/dist/cjs/src/assetManager.js +274 -0
  27. package/dist/cjs/src/assets/routes.d.ts +7 -0
  28. package/dist/cjs/src/assets/routes.js +165 -0
  29. package/dist/cjs/src/attachments/routes.d.ts +7 -0
  30. package/dist/cjs/src/attachments/routes.js +72 -0
  31. package/dist/cjs/src/authManager.d.ts +16 -0
  32. package/dist/cjs/src/authManager.js +64 -0
  33. package/dist/cjs/src/cacheManager.d.ts +20 -0
  34. package/dist/cjs/src/cacheManager.js +51 -0
  35. package/dist/cjs/src/clusterService.d.ts +44 -0
  36. package/dist/cjs/src/clusterService.js +120 -0
  37. package/dist/cjs/src/codeGeneratorManager.d.ts +14 -0
  38. package/dist/cjs/src/codeGeneratorManager.js +93 -0
  39. package/dist/cjs/src/config/routes.d.ts +7 -0
  40. package/dist/cjs/src/config/routes.js +160 -0
  41. package/dist/cjs/src/configManager.d.ts +42 -0
  42. package/dist/cjs/src/configManager.js +136 -0
  43. package/dist/cjs/src/containerManager.d.ts +148 -0
  44. package/dist/cjs/src/containerManager.js +958 -0
  45. package/dist/cjs/src/definitionsManager.d.ts +20 -0
  46. package/dist/cjs/src/definitionsManager.js +171 -0
  47. package/dist/cjs/src/filesystem/routes.d.ts +7 -0
  48. package/dist/cjs/src/filesystem/routes.js +105 -0
  49. package/dist/cjs/src/filesystemManager.d.ts +27 -0
  50. package/dist/cjs/src/filesystemManager.js +118 -0
  51. package/dist/cjs/src/identities/routes.d.ts +7 -0
  52. package/dist/cjs/src/identities/routes.js +37 -0
  53. package/dist/cjs/src/instanceManager.d.ts +69 -0
  54. package/dist/cjs/src/instanceManager.js +910 -0
  55. package/dist/cjs/src/instances/routes.d.ts +7 -0
  56. package/dist/cjs/src/instances/routes.js +179 -0
  57. package/dist/cjs/src/middleware/cors.d.ts +6 -0
  58. package/dist/cjs/src/middleware/cors.js +14 -0
  59. package/dist/cjs/src/middleware/kapeta.d.ts +15 -0
  60. package/dist/cjs/src/middleware/kapeta.js +28 -0
  61. package/dist/cjs/src/middleware/stringBody.d.ts +9 -0
  62. package/dist/cjs/src/middleware/stringBody.js +18 -0
  63. package/dist/cjs/src/networkManager.d.ts +37 -0
  64. package/dist/cjs/src/networkManager.js +119 -0
  65. package/dist/cjs/src/operatorManager.d.ts +41 -0
  66. package/dist/cjs/src/operatorManager.js +211 -0
  67. package/dist/cjs/src/progressListener.d.ts +31 -0
  68. package/dist/cjs/src/progressListener.js +133 -0
  69. package/dist/cjs/src/providerManager.d.ts +11 -0
  70. package/dist/cjs/src/providerManager.js +84 -0
  71. package/dist/cjs/src/providers/routes.d.ts +7 -0
  72. package/dist/cjs/src/providers/routes.js +46 -0
  73. package/dist/cjs/src/proxy/routes.d.ts +7 -0
  74. package/dist/cjs/src/proxy/routes.js +115 -0
  75. package/dist/cjs/src/proxy/types/rest.d.ts +10 -0
  76. package/dist/cjs/src/proxy/types/rest.js +123 -0
  77. package/dist/cjs/src/proxy/types/web.d.ts +8 -0
  78. package/dist/cjs/src/proxy/types/web.js +61 -0
  79. package/dist/cjs/src/repositoryManager.d.ts +35 -0
  80. package/dist/cjs/src/repositoryManager.js +247 -0
  81. package/dist/cjs/src/serviceManager.d.ts +36 -0
  82. package/dist/cjs/src/serviceManager.js +106 -0
  83. package/dist/cjs/src/socketManager.d.ts +32 -0
  84. package/dist/cjs/src/socketManager.js +125 -0
  85. package/dist/cjs/src/storageService.d.ts +21 -0
  86. package/dist/cjs/src/storageService.js +81 -0
  87. package/dist/cjs/src/taskManager.d.ts +70 -0
  88. package/dist/cjs/src/taskManager.js +181 -0
  89. package/dist/cjs/src/tasks/routes.d.ts +7 -0
  90. package/dist/cjs/src/tasks/routes.js +39 -0
  91. package/dist/cjs/src/traffic/routes.d.ts +7 -0
  92. package/dist/cjs/src/traffic/routes.js +22 -0
  93. package/dist/cjs/src/types.d.ts +99 -0
  94. package/dist/cjs/src/types.js +39 -0
  95. package/dist/cjs/src/utils/BlockInstanceRunner.d.ts +28 -0
  96. package/dist/cjs/src/utils/BlockInstanceRunner.js +432 -0
  97. package/dist/cjs/src/utils/DefaultProviderInstaller.d.ts +15 -0
  98. package/dist/cjs/src/utils/DefaultProviderInstaller.js +136 -0
  99. package/dist/cjs/src/utils/InternalConfigProvider.d.ts +38 -0
  100. package/dist/cjs/src/utils/InternalConfigProvider.js +146 -0
  101. package/dist/cjs/src/utils/LogData.d.ts +23 -0
  102. package/dist/cjs/src/utils/LogData.js +46 -0
  103. package/dist/cjs/src/utils/commandLineUtils.d.ts +8 -0
  104. package/dist/cjs/src/utils/commandLineUtils.js +39 -0
  105. package/dist/cjs/src/utils/pathTemplateParser.d.ts +30 -0
  106. package/dist/cjs/src/utils/pathTemplateParser.js +135 -0
  107. package/dist/cjs/src/utils/utils.d.ts +40 -0
  108. package/dist/cjs/src/utils/utils.js +148 -0
  109. package/dist/cjs/start.d.ts +5 -0
  110. package/dist/cjs/start.js +17 -0
  111. package/dist/cjs/test/proxy/types/rest.test.d.ts +5 -0
  112. package/dist/cjs/test/proxy/types/rest.test.js +48 -0
  113. package/dist/cjs/test/utils/pathTemplateParser.test.d.ts +5 -0
  114. package/dist/cjs/test/utils/pathTemplateParser.test.js +27 -0
  115. package/dist/esm/index.d.ts +34 -0
  116. package/dist/esm/index.js +263 -0
  117. package/dist/esm/package.json +1 -0
  118. package/dist/esm/src/RepositoryWatcher.d.ts +30 -0
  119. package/dist/esm/src/RepositoryWatcher.js +332 -0
  120. package/dist/esm/src/ai/aiClient.d.ts +20 -0
  121. package/dist/esm/src/ai/aiClient.js +74 -0
  122. package/dist/esm/src/ai/routes.d.ts +7 -0
  123. package/dist/esm/src/ai/routes.js +37 -0
  124. package/dist/esm/src/ai/transform.d.ts +11 -0
  125. package/dist/esm/src/ai/transform.js +239 -0
  126. package/dist/esm/src/ai/types.d.ts +40 -0
  127. package/dist/esm/src/ai/types.js +2 -0
  128. package/dist/esm/src/api.d.ts +7 -0
  129. package/dist/esm/src/api.js +29 -0
  130. package/dist/esm/src/assetManager.d.ts +41 -0
  131. package/dist/esm/src/assetManager.js +274 -0
  132. package/dist/esm/src/assets/routes.d.ts +7 -0
  133. package/dist/esm/src/assets/routes.js +165 -0
  134. package/dist/esm/src/attachments/routes.d.ts +7 -0
  135. package/dist/esm/src/attachments/routes.js +72 -0
  136. package/dist/esm/src/authManager.d.ts +16 -0
  137. package/dist/esm/src/authManager.js +64 -0
  138. package/dist/esm/src/cacheManager.d.ts +20 -0
  139. package/dist/esm/src/cacheManager.js +51 -0
  140. package/dist/esm/src/clusterService.d.ts +44 -0
  141. package/dist/esm/src/clusterService.js +120 -0
  142. package/dist/esm/src/codeGeneratorManager.d.ts +14 -0
  143. package/dist/esm/src/codeGeneratorManager.js +93 -0
  144. package/dist/esm/src/config/routes.d.ts +7 -0
  145. package/dist/esm/src/config/routes.js +160 -0
  146. package/dist/esm/src/configManager.d.ts +42 -0
  147. package/dist/esm/src/configManager.js +136 -0
  148. package/dist/esm/src/containerManager.d.ts +148 -0
  149. package/dist/esm/src/containerManager.js +958 -0
  150. package/dist/esm/src/definitionsManager.d.ts +20 -0
  151. package/dist/esm/src/definitionsManager.js +171 -0
  152. package/dist/esm/src/filesystem/routes.d.ts +7 -0
  153. package/dist/esm/src/filesystem/routes.js +105 -0
  154. package/dist/esm/src/filesystemManager.d.ts +27 -0
  155. package/dist/esm/src/filesystemManager.js +118 -0
  156. package/dist/esm/src/identities/routes.d.ts +7 -0
  157. package/dist/esm/src/identities/routes.js +37 -0
  158. package/dist/esm/src/instanceManager.d.ts +69 -0
  159. package/dist/esm/src/instanceManager.js +910 -0
  160. package/dist/esm/src/instances/routes.d.ts +7 -0
  161. package/dist/esm/src/instances/routes.js +179 -0
  162. package/dist/esm/src/middleware/cors.d.ts +6 -0
  163. package/dist/esm/src/middleware/cors.js +14 -0
  164. package/dist/esm/src/middleware/kapeta.d.ts +15 -0
  165. package/dist/esm/src/middleware/kapeta.js +28 -0
  166. package/dist/esm/src/middleware/stringBody.d.ts +9 -0
  167. package/dist/esm/src/middleware/stringBody.js +18 -0
  168. package/dist/esm/src/networkManager.d.ts +37 -0
  169. package/dist/esm/src/networkManager.js +119 -0
  170. package/dist/esm/src/operatorManager.d.ts +41 -0
  171. package/dist/esm/src/operatorManager.js +211 -0
  172. package/dist/esm/src/progressListener.d.ts +31 -0
  173. package/dist/esm/src/progressListener.js +133 -0
  174. package/dist/esm/src/providerManager.d.ts +11 -0
  175. package/dist/esm/src/providerManager.js +84 -0
  176. package/dist/esm/src/providers/routes.d.ts +7 -0
  177. package/dist/esm/src/providers/routes.js +46 -0
  178. package/dist/esm/src/proxy/routes.d.ts +7 -0
  179. package/dist/esm/src/proxy/routes.js +115 -0
  180. package/dist/esm/src/proxy/types/rest.d.ts +10 -0
  181. package/dist/esm/src/proxy/types/rest.js +123 -0
  182. package/dist/esm/src/proxy/types/web.d.ts +8 -0
  183. package/dist/esm/src/proxy/types/web.js +61 -0
  184. package/dist/esm/src/repositoryManager.d.ts +35 -0
  185. package/dist/esm/src/repositoryManager.js +247 -0
  186. package/dist/esm/src/serviceManager.d.ts +36 -0
  187. package/dist/esm/src/serviceManager.js +106 -0
  188. package/dist/esm/src/socketManager.d.ts +32 -0
  189. package/dist/esm/src/socketManager.js +125 -0
  190. package/dist/esm/src/storageService.d.ts +21 -0
  191. package/dist/esm/src/storageService.js +81 -0
  192. package/dist/esm/src/taskManager.d.ts +70 -0
  193. package/dist/esm/src/taskManager.js +181 -0
  194. package/dist/esm/src/tasks/routes.d.ts +7 -0
  195. package/dist/esm/src/tasks/routes.js +39 -0
  196. package/dist/esm/src/traffic/routes.d.ts +7 -0
  197. package/dist/esm/src/traffic/routes.js +22 -0
  198. package/dist/esm/src/types.d.ts +99 -0
  199. package/dist/esm/src/types.js +39 -0
  200. package/dist/esm/src/utils/BlockInstanceRunner.d.ts +28 -0
  201. package/dist/esm/src/utils/BlockInstanceRunner.js +432 -0
  202. package/dist/esm/src/utils/DefaultProviderInstaller.d.ts +15 -0
  203. package/dist/esm/src/utils/DefaultProviderInstaller.js +136 -0
  204. package/dist/esm/src/utils/InternalConfigProvider.d.ts +38 -0
  205. package/dist/esm/src/utils/InternalConfigProvider.js +146 -0
  206. package/dist/esm/src/utils/LogData.d.ts +23 -0
  207. package/dist/esm/src/utils/LogData.js +46 -0
  208. package/dist/esm/src/utils/commandLineUtils.d.ts +8 -0
  209. package/dist/esm/src/utils/commandLineUtils.js +39 -0
  210. package/dist/esm/src/utils/pathTemplateParser.d.ts +30 -0
  211. package/dist/esm/src/utils/pathTemplateParser.js +135 -0
  212. package/dist/esm/src/utils/utils.d.ts +40 -0
  213. package/dist/esm/src/utils/utils.js +148 -0
  214. package/dist/esm/start.d.ts +5 -0
  215. package/dist/esm/start.js +17 -0
  216. package/dist/esm/test/proxy/types/rest.test.d.ts +5 -0
  217. package/dist/esm/test/proxy/types/rest.test.js +48 -0
  218. package/dist/esm/test/utils/pathTemplateParser.test.d.ts +5 -0
  219. package/dist/esm/test/utils/pathTemplateParser.test.js +27 -0
  220. package/index.ts +280 -0
  221. package/jest.config.js +8 -0
  222. package/package.json +134 -0
  223. package/src/RepositoryWatcher.ts +363 -0
  224. package/src/ai/aiClient.ts +93 -0
  225. package/src/ai/routes.ts +39 -0
  226. package/src/ai/transform.ts +275 -0
  227. package/src/ai/types.ts +45 -0
  228. package/src/api.ts +32 -0
  229. package/src/assetManager.ts +355 -0
  230. package/src/assets/routes.ts +183 -0
  231. package/src/attachments/routes.ts +79 -0
  232. package/src/authManager.ts +67 -0
  233. package/src/cacheManager.ts +59 -0
  234. package/src/clusterService.ts +142 -0
  235. package/src/codeGeneratorManager.ts +109 -0
  236. package/src/config/routes.ts +201 -0
  237. package/src/configManager.ts +180 -0
  238. package/src/containerManager.ts +1178 -0
  239. package/src/definitionsManager.ts +212 -0
  240. package/src/filesystem/routes.ts +123 -0
  241. package/src/filesystemManager.ts +133 -0
  242. package/src/identities/routes.ts +38 -0
  243. package/src/instanceManager.ts +1160 -0
  244. package/src/instances/routes.ts +203 -0
  245. package/src/middleware/cors.ts +14 -0
  246. package/src/middleware/kapeta.ts +41 -0
  247. package/src/middleware/stringBody.ts +21 -0
  248. package/src/networkManager.ts +148 -0
  249. package/src/operatorManager.ts +294 -0
  250. package/src/progressListener.ts +151 -0
  251. package/src/providerManager.ts +97 -0
  252. package/src/providers/routes.ts +51 -0
  253. package/src/proxy/routes.ts +153 -0
  254. package/src/proxy/types/rest.ts +172 -0
  255. package/src/proxy/types/web.ts +70 -0
  256. package/src/repositoryManager.ts +291 -0
  257. package/src/serviceManager.ts +133 -0
  258. package/src/socketManager.ts +138 -0
  259. package/src/storageService.ts +97 -0
  260. package/src/taskManager.ts +247 -0
  261. package/src/tasks/routes.ts +43 -0
  262. package/src/traffic/routes.ts +23 -0
  263. package/src/types.ts +112 -0
  264. package/src/utils/BlockInstanceRunner.ts +577 -0
  265. package/src/utils/DefaultProviderInstaller.ts +150 -0
  266. package/src/utils/InternalConfigProvider.ts +214 -0
  267. package/src/utils/LogData.ts +50 -0
  268. package/src/utils/commandLineUtils.ts +45 -0
  269. package/src/utils/pathTemplateParser.ts +157 -0
  270. package/src/utils/utils.ts +155 -0
  271. package/start.ts +14 -0
  272. package/test/proxy/types/rest.test.ts +54 -0
  273. package/test/utils/pathTemplateParser.test.ts +29 -0
  274. package/tsconfig.json +15 -0
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Copyright 2023 Kapeta Inc.
3
+ * SPDX-License-Identifier: BUSL-1.1
4
+ */
5
+ /// <reference types="express" />
6
+ declare const router: import("express").Router;
7
+ export default router;
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2023 Kapeta Inc.
4
+ * SPDX-License-Identifier: BUSL-1.1
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const express_promise_router_1 = __importDefault(require("express-promise-router"));
11
+ const instanceManager_1 = require("../instanceManager");
12
+ const serviceManager_1 = require("../serviceManager");
13
+ const cors_1 = require("../middleware/cors");
14
+ const kapeta_1 = require("../middleware/kapeta");
15
+ const stringBody_1 = require("../middleware/stringBody");
16
+ const types_1 = require("../types");
17
+ const taskManager_1 = require("../taskManager");
18
+ const router = (0, express_promise_router_1.default)();
19
+ router.use('/', cors_1.corsHandler);
20
+ router.use('/', kapeta_1.kapetaHeaders);
21
+ /**
22
+ * Get all instances
23
+ */
24
+ router.get('/', (req, res) => {
25
+ res.send(instanceManager_1.instanceManager.getInstances());
26
+ });
27
+ /**
28
+ * Get all instances
29
+ */
30
+ router.get('/:systemId/instances', async (req, res) => {
31
+ res.send(await instanceManager_1.instanceManager.getInstancesForPlan(req.params.systemId));
32
+ });
33
+ /**
34
+ * Get single instance in a plan
35
+ */
36
+ router.get('/:systemId/instances/:instanceId', (req, res) => {
37
+ res.send(instanceManager_1.instanceManager.getInstance(req.params.systemId, req.params.instanceId));
38
+ });
39
+ /**
40
+ * Start all instances in a plan
41
+ */
42
+ router.post('/:systemId/start', async (req, res) => {
43
+ try {
44
+ const task = await instanceManager_1.instanceManager.startAllForPlan(req.params.systemId);
45
+ res.status(202).send({
46
+ ok: true,
47
+ taskId: task.id,
48
+ });
49
+ }
50
+ catch (e) {
51
+ res.status(500).send({ ok: false, error: e.message });
52
+ }
53
+ });
54
+ /**
55
+ * Stop all instances in plan
56
+ */
57
+ router.post('/:systemId/stop', async (req, res) => {
58
+ const task = instanceManager_1.instanceManager.stopAllForPlan(req.params.systemId);
59
+ res.status(202).send({
60
+ ok: true,
61
+ taskId: task.id,
62
+ });
63
+ });
64
+ /**
65
+ * Start single instance in a plan
66
+ */
67
+ router.post('/:systemId/:instanceId/start', async (req, res) => {
68
+ try {
69
+ const result = await instanceManager_1.instanceManager.start(req.params.systemId, req.params.instanceId);
70
+ if (result instanceof taskManager_1.Task) {
71
+ res.status(202).send({
72
+ ok: true,
73
+ taskId: result.id,
74
+ });
75
+ }
76
+ else {
77
+ res.status(202).send({
78
+ ok: true,
79
+ pid: result.pid,
80
+ type: result.type,
81
+ });
82
+ }
83
+ }
84
+ catch (e) {
85
+ res.status(500).send({ ok: false, error: e.message });
86
+ }
87
+ });
88
+ /**
89
+ * Stop single instance in a plan
90
+ */
91
+ router.post('/:systemId/:instanceId/stop', async (req, res) => {
92
+ await instanceManager_1.instanceManager.stop(req.params.systemId, req.params.instanceId);
93
+ res.status(202).send({ ok: true });
94
+ });
95
+ /**
96
+ * Get logs for instance in a plan
97
+ */
98
+ router.get('/:systemId/:instanceId/logs', async (req, res) => {
99
+ const instanceInfo = instanceManager_1.instanceManager.getInstance(req.params.systemId, req.params.instanceId);
100
+ if (!instanceInfo) {
101
+ res.status(404).send({ ok: false });
102
+ return;
103
+ }
104
+ try {
105
+ const logs = await instanceManager_1.instanceManager.getLogs(req.params.systemId, req.params.instanceId);
106
+ res.status(200).send({
107
+ logs,
108
+ });
109
+ }
110
+ catch (e) {
111
+ res.status(500).send({ ok: false, error: e.message });
112
+ }
113
+ });
114
+ /**
115
+ * Get public address for instance in a plan if available
116
+ */
117
+ router.get('/:systemId/:instanceId/address/public', (req, res) => {
118
+ const instance = instanceManager_1.instanceManager.getInstance(req.params.systemId, req.params.instanceId);
119
+ if (!instance) {
120
+ res.status(404).send({ ok: false });
121
+ return;
122
+ }
123
+ if (!instance.address) {
124
+ res.status(400).send({ error: `Instance does not have an address. Make sure it's running.` });
125
+ return;
126
+ }
127
+ res.status(200).send(instance.address);
128
+ });
129
+ /**
130
+ * Get public address for particular resource on instance in a plan if available
131
+ */
132
+ router.get('/:systemId/:instanceId/provider/:portType/:resourceName/address/public', (req, res) => {
133
+ res.send(serviceManager_1.serviceManager.getConsumerAddress(req.params.systemId, req.params.instanceId, req.params.resourceName, req.params.portType, req.kapeta?.environment));
134
+ });
135
+ router.use('/', stringBody_1.stringBody);
136
+ router.use('/', (req, res, next) => {
137
+ if (!req.kapeta.blockRef) {
138
+ res.status(400).send({ error: 'Missing X-Kapeta-Block header.' });
139
+ return;
140
+ }
141
+ next();
142
+ });
143
+ /**
144
+ * Updates the full configuration for a given instance.
145
+ */
146
+ router.put('/', async (req, res) => {
147
+ let instance = req.stringBody ? JSON.parse(req.stringBody) : null;
148
+ if (req.kapeta.environment === 'docker') {
149
+ //A bit hacky but we want to avoid overwriting the docker PID with a process PID
150
+ const oldInstance = instanceManager_1.instanceManager.getInstance(req.kapeta.systemId, req.kapeta.instanceId);
151
+ if (oldInstance) {
152
+ instance.pid = oldInstance.pid;
153
+ instance.desiredStatus = oldInstance.desiredStatus;
154
+ }
155
+ instance.type = types_1.InstanceType.DOCKER;
156
+ instance.owner = types_1.InstanceOwner.INTERNAL;
157
+ }
158
+ else {
159
+ // Coming from user starting the instance outside of kapeta
160
+ instance.type = types_1.InstanceType.LOCAL;
161
+ instance.owner = types_1.InstanceOwner.EXTERNAL;
162
+ instance.desiredStatus = types_1.DesiredInstanceStatus.EXTERNAL;
163
+ }
164
+ try {
165
+ await instanceManager_1.instanceManager.registerInstanceFromSDK(req.kapeta.systemId, req.kapeta.instanceId, instance);
166
+ res.status(202).send({ ok: true });
167
+ }
168
+ catch (e) {
169
+ res.status(400).send({ error: e.message });
170
+ }
171
+ });
172
+ /**
173
+ * Delete instance
174
+ */
175
+ router.delete('/', async (req, res) => {
176
+ await instanceManager_1.instanceManager.markAsStopped(req.kapeta.systemId, req.kapeta.instanceId);
177
+ res.status(202).send({ ok: true });
178
+ });
179
+ exports.default = router;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright 2023 Kapeta Inc.
3
+ * SPDX-License-Identifier: BUSL-1.1
4
+ */
5
+ import { NextFunction, Request, Response } from 'express';
6
+ export declare function corsHandler(req: Request, res: Response, next: NextFunction): void;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2023 Kapeta Inc.
4
+ * SPDX-License-Identifier: BUSL-1.1
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.corsHandler = void 0;
8
+ function corsHandler(req, res, next) {
9
+ res.set('Access-Control-Allow-Origin', req.headers.origin);
10
+ res.set('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE, HEAD, PATCH');
11
+ res.set('Access-Control-Allow-Headers', '*');
12
+ next();
13
+ }
14
+ exports.corsHandler = corsHandler;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright 2023 Kapeta Inc.
3
+ * SPDX-License-Identifier: BUSL-1.1
4
+ */
5
+ import { NextFunction, Request, Response } from 'express';
6
+ import { EnvironmentType } from '../types';
7
+ export interface KapetaRequest extends Request {
8
+ kapeta?: {
9
+ blockRef: string;
10
+ instanceId: string;
11
+ systemId: string;
12
+ environment?: EnvironmentType;
13
+ };
14
+ }
15
+ export declare function kapetaHeaders(req: KapetaRequest, res: Response, next: NextFunction): void;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2023 Kapeta Inc.
4
+ * SPDX-License-Identifier: BUSL-1.1
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.kapetaHeaders = void 0;
8
+ const nodejs_utils_1 = require("@kapeta/nodejs-utils");
9
+ function kapetaHeaders(req, res, next) {
10
+ let blockRef = req.headers['x-kapeta-block'];
11
+ let systemId = req.headers['x-kapeta-system'];
12
+ let instanceId = req.headers['x-kapeta-instance'];
13
+ let environment = req.headers['x-kapeta-environment'];
14
+ if (blockRef) {
15
+ blockRef = (0, nodejs_utils_1.normalizeKapetaUri)(blockRef);
16
+ }
17
+ if (systemId) {
18
+ systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
19
+ }
20
+ req.kapeta = {
21
+ blockRef,
22
+ instanceId,
23
+ systemId,
24
+ environment: environment ? environment : undefined,
25
+ };
26
+ next();
27
+ }
28
+ exports.kapetaHeaders = kapetaHeaders;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Copyright 2023 Kapeta Inc.
3
+ * SPDX-License-Identifier: BUSL-1.1
4
+ */
5
+ import { NextFunction, Request, Response } from 'express';
6
+ export type StringBodyRequest = Request<any> & {
7
+ stringBody?: string;
8
+ };
9
+ export declare function stringBody(req: StringBodyRequest, res: Response, next: NextFunction): void;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2023 Kapeta Inc.
4
+ * SPDX-License-Identifier: BUSL-1.1
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.stringBody = void 0;
8
+ function stringBody(req, res, next) {
9
+ // push the data to body
10
+ const body = [];
11
+ req.on('data', (chunk) => {
12
+ body.push(chunk);
13
+ }).on('end', () => {
14
+ req.stringBody = Buffer.concat(body).toString();
15
+ next();
16
+ });
17
+ }
18
+ exports.stringBody = stringBody;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Copyright 2023 Kapeta Inc.
3
+ * SPDX-License-Identifier: BUSL-1.1
4
+ */
5
+ import { Connection } from '@kapeta/schemas';
6
+ import { SimpleRequest, SimpleResponse } from './types';
7
+ declare class NetworkManager {
8
+ private _connections;
9
+ private _sources;
10
+ private _targets;
11
+ static toConnectionId(connection: Connection): string;
12
+ constructor();
13
+ _ensureSystem(systemId: string): void;
14
+ _ensureConnection(systemId: string, connectionId: string): Traffic[];
15
+ _ensureSource(systemId: string, sourceBlockInstanceId: string): Traffic[];
16
+ _ensureTarget(systemId: string, targetBlockInstanceId: string): Traffic[];
17
+ addRequest(systemId: string, connection: Connection, request: SimpleRequest, consumerMethodId?: string, providerMethodId?: string): Traffic;
18
+ getTrafficForConnection(systemId: string, connectionId: string): Traffic[];
19
+ getTrafficForSource(systemId: string, blockInstanceId: string): Traffic[];
20
+ getTrafficForTarget(systemId: string, blockInstanceId: string): Traffic[];
21
+ }
22
+ declare class Traffic {
23
+ readonly id: string;
24
+ readonly connectionId: string;
25
+ readonly consumerMethodId: string | undefined;
26
+ readonly providerMethodId: string | undefined;
27
+ readonly created: number;
28
+ readonly request: SimpleRequest;
29
+ ended: null | number;
30
+ error: null | string;
31
+ response: SimpleResponse | null;
32
+ constructor(connection: Connection, request: SimpleRequest, consumerMethodId?: string, providerMethodId?: string);
33
+ asError(err: any): void;
34
+ withResponse(response: SimpleResponse): void;
35
+ }
36
+ export declare const networkManager: NetworkManager;
37
+ export {};
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2023 Kapeta Inc.
4
+ * SPDX-License-Identifier: BUSL-1.1
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.networkManager = void 0;
11
+ const node_uuid_1 = __importDefault(require("node-uuid"));
12
+ const nodejs_utils_1 = require("@kapeta/nodejs-utils");
13
+ class NetworkManager {
14
+ _connections;
15
+ _sources;
16
+ _targets;
17
+ static toConnectionId(connection) {
18
+ return [
19
+ connection.provider.blockId,
20
+ connection.provider.resourceName,
21
+ connection.consumer.blockId,
22
+ connection.consumer.resourceName,
23
+ ].join('_');
24
+ }
25
+ constructor() {
26
+ this._connections = {};
27
+ this._sources = {};
28
+ this._targets = {};
29
+ }
30
+ _ensureSystem(systemId) {
31
+ systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
32
+ if (!this._connections[systemId]) {
33
+ this._connections[systemId] = {};
34
+ }
35
+ if (!this._sources[systemId]) {
36
+ this._sources[systemId] = {};
37
+ }
38
+ if (!this._targets[systemId]) {
39
+ this._targets[systemId] = {};
40
+ }
41
+ }
42
+ _ensureConnection(systemId, connectionId) {
43
+ systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
44
+ this._ensureSystem(systemId);
45
+ if (!this._connections[systemId][connectionId]) {
46
+ this._connections[systemId][connectionId] = [];
47
+ }
48
+ return this._connections[systemId][connectionId];
49
+ }
50
+ _ensureSource(systemId, sourceBlockInstanceId) {
51
+ systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
52
+ this._ensureSystem(systemId);
53
+ if (!this._sources[systemId][sourceBlockInstanceId]) {
54
+ this._sources[systemId][sourceBlockInstanceId] = [];
55
+ }
56
+ return this._sources[systemId][sourceBlockInstanceId];
57
+ }
58
+ _ensureTarget(systemId, targetBlockInstanceId) {
59
+ systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
60
+ this._ensureSystem(systemId);
61
+ if (!this._targets[systemId][targetBlockInstanceId]) {
62
+ this._targets[systemId][targetBlockInstanceId] = [];
63
+ }
64
+ return this._targets[systemId][targetBlockInstanceId];
65
+ }
66
+ addRequest(systemId, connection, request, consumerMethodId, providerMethodId) {
67
+ systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
68
+ const traffic = new Traffic(connection, request, consumerMethodId, providerMethodId);
69
+ this._ensureConnection(systemId, traffic.connectionId).push(traffic);
70
+ this._ensureSource(systemId, connection.provider.blockId).push(traffic);
71
+ this._ensureTarget(systemId, connection.consumer.blockId).push(traffic);
72
+ return traffic;
73
+ }
74
+ getTrafficForConnection(systemId, connectionId) {
75
+ return this._ensureConnection(systemId, connectionId);
76
+ }
77
+ getTrafficForSource(systemId, blockInstanceId) {
78
+ return this._ensureSource(systemId, blockInstanceId);
79
+ }
80
+ getTrafficForTarget(systemId, blockInstanceId) {
81
+ return this._ensureTarget(systemId, blockInstanceId);
82
+ }
83
+ }
84
+ class Traffic {
85
+ id;
86
+ connectionId;
87
+ consumerMethodId;
88
+ providerMethodId;
89
+ created;
90
+ request;
91
+ ended;
92
+ error;
93
+ response;
94
+ constructor(connection, request, consumerMethodId, providerMethodId) {
95
+ this.id = node_uuid_1.default.v4();
96
+ this.connectionId = NetworkManager.toConnectionId(connection);
97
+ this.consumerMethodId = consumerMethodId;
98
+ this.providerMethodId = providerMethodId;
99
+ this.request = request;
100
+ this.response = null;
101
+ this.error = null;
102
+ this.ended = null;
103
+ this.created = new Date().getTime();
104
+ }
105
+ asError(err) {
106
+ this.ended = new Date().getTime();
107
+ this.response = {
108
+ code: 0,
109
+ headers: {},
110
+ body: null,
111
+ };
112
+ this.error = err + '';
113
+ }
114
+ withResponse(response) {
115
+ this.ended = new Date().getTime();
116
+ this.response = response;
117
+ }
118
+ }
119
+ exports.networkManager = new NetworkManager();
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Copyright 2023 Kapeta Inc.
3
+ * SPDX-License-Identifier: BUSL-1.1
4
+ */
5
+ import { DefinitionInfo } from '@kapeta/local-cluster-config';
6
+ import { ContainerInfo } from './containerManager';
7
+ import { AnyMap, EnvironmentType } from './types';
8
+ import { LocalInstance } from '@kapeta/schemas';
9
+ import { ResourceInfo } from '@kapeta/sdk-config';
10
+ declare class Operator {
11
+ private readonly _data;
12
+ constructor(data: DefinitionInfo);
13
+ getLocalData(): LocalInstance;
14
+ getDefinitionInfo(): DefinitionInfo;
15
+ getCredentials(): any;
16
+ }
17
+ declare class OperatorManager {
18
+ private _mountDir;
19
+ private operatorLock;
20
+ constructor();
21
+ _getMountPoint(operatorType: string, mountName: string): string;
22
+ /**
23
+ * Get operator definition for resource type
24
+ */
25
+ getOperator(fullName: string, version: string): Promise<Operator>;
26
+ /**
27
+ * Get information about a specific consumed resource
28
+ */
29
+ getConsumerResourceInfo(systemId: string, fromServiceId: string, resourceType: string, portType: string, name: string, environment?: EnvironmentType, ensureContainer?: boolean): Promise<ResourceInfo<any, any>>;
30
+ getOperatorPorts(systemId: string, kind: string, version: string): Promise<AnyMap>;
31
+ /**
32
+ * Ensure we have a running operator of given type
33
+ *
34
+ * @param systemId the plan ref
35
+ * @param kind the full name - e.g. myhandle/rabbitmq
36
+ * @param version the version of the operator
37
+ */
38
+ ensureOperator(systemId: string, kind: string, version: string): Promise<ContainerInfo>;
39
+ }
40
+ export declare const operatorManager: OperatorManager;
41
+ export {};