@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,5 @@
1
+ /**
2
+ * Copyright 2023 Kapeta Inc.
3
+ * SPDX-License-Identifier: BUSL-1.1
4
+ */
5
+ export {};
@@ -0,0 +1,48 @@
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
+ const rest_1 = require("../../../src/proxy/types/rest");
8
+ describe('getRestMethodId', () => {
9
+ it('should match @Query in url', () => {
10
+ const restResource = new TestResource();
11
+ const restMethodId = (0, rest_1.getRestMethodId)(restResource, 'POST', '/names?name=Ib');
12
+ expect(restMethodId).toBeDefined();
13
+ });
14
+ });
15
+ class TestResource {
16
+ kind = '';
17
+ metadata = new TestResourceMetaData();
18
+ get spec() {
19
+ return {
20
+ methods: [
21
+ {
22
+ responseType: {
23
+ ref: 'Name[]',
24
+ },
25
+ method: 'GET',
26
+ path: '/names',
27
+ arguments: {},
28
+ },
29
+ {
30
+ responseType: {
31
+ ref: 'Name',
32
+ },
33
+ method: 'POST',
34
+ path: '/names',
35
+ arguments: {
36
+ name: {
37
+ type: 'string',
38
+ transport: 'QUERY',
39
+ },
40
+ },
41
+ },
42
+ ],
43
+ };
44
+ }
45
+ }
46
+ class TestResourceMetaData {
47
+ name = '';
48
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Copyright 2023 Kapeta Inc.
3
+ * SPDX-License-Identifier: BUSL-1.1
4
+ */
5
+ export {};
@@ -0,0 +1,27 @@
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
+ const pathTemplateParser_1 = require("../../src/utils/pathTemplateParser");
8
+ describe('pathTemplateParser', () => {
9
+ it('must return parameters for query parameters from parse', () => {
10
+ const template = new pathTemplateParser_1.PathTemplate('/names');
11
+ const parse = template.parse('/names?name=Ib#test');
12
+ console.log(parse);
13
+ expect(parse).toBeTruthy();
14
+ });
15
+ it('must return parameters defined in url', () => {
16
+ const template = new pathTemplateParser_1.PathTemplate('/names/{identityId}');
17
+ const parse = template.parse('/names/idn_xxyyzz');
18
+ expect(parse).toBeTruthy();
19
+ expect(parse).toMatchObject({ identityId: 'idn_xxyyzz' });
20
+ });
21
+ it('must return parameters defined in url regardless of query parameters', () => {
22
+ const template = new pathTemplateParser_1.PathTemplate('/names/{identityId}');
23
+ const parse = template.parse('/names/idn_xxyyzz?name=Ib#test');
24
+ expect(parse).toBeTruthy();
25
+ expect(parse).toMatchObject({ identityId: 'idn_xxyyzz' });
26
+ });
27
+ });
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Copyright 2023 Kapeta Inc.
3
+ * SPDX-License-Identifier: BUSL-1.1
4
+ */
5
+ /// <reference types="node" />
6
+ import HTTP from 'http';
7
+ export type LocalClusterService = HTTP.Server & {
8
+ host?: string;
9
+ port?: number;
10
+ };
11
+ export type StartResult = {
12
+ host: string;
13
+ port: number;
14
+ dockerStatus: boolean;
15
+ };
16
+ declare const _default: {
17
+ isRunning: () => boolean;
18
+ getCurrentPort: () => number | undefined;
19
+ ping: (host: string, port: number) => Promise<{
20
+ ok: boolean;
21
+ }>;
22
+ /**
23
+ * Starts the local cluster service.
24
+ * resolves when listening is done with port number. Rejects if listening failed.
25
+ */
26
+ start: () => Promise<StartResult>;
27
+ /**
28
+ * Stops any currently running cluster services.
29
+ * @return {Promise<boolean>} Returns true if the service was stopped - false if no service was running.
30
+ */
31
+ stop: () => Promise<unknown>;
32
+ getServices: () => any;
33
+ };
34
+ export default _default;
@@ -0,0 +1,263 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2023 Kapeta Inc.
4
+ * SPDX-License-Identifier: BUSL-1.1
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || function (mod) {
23
+ if (mod && mod.__esModule) return mod;
24
+ var result = {};
25
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
26
+ __setModuleDefault(result, mod);
27
+ return result;
28
+ };
29
+ var __importDefault = (this && this.__importDefault) || function (mod) {
30
+ return (mod && mod.__esModule) ? mod : { "default": mod };
31
+ };
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ const clusterService_1 = require("./src/clusterService");
34
+ const storageService_1 = require("./src/storageService");
35
+ const serviceManager_1 = require("./src/serviceManager");
36
+ const socketManager_1 = require("./src/socketManager");
37
+ const containerManager_1 = require("./src/containerManager");
38
+ const express_1 = __importDefault(require("express"));
39
+ const http_1 = __importDefault(require("http"));
40
+ const socket_io_1 = require("socket.io");
41
+ const routes_1 = __importDefault(require("./src/traffic/routes"));
42
+ const routes_2 = __importDefault(require("./src/proxy/routes"));
43
+ const routes_3 = __importDefault(require("./src/config/routes"));
44
+ const routes_4 = __importDefault(require("./src/instances/routes"));
45
+ const routes_5 = __importDefault(require("./src/identities/routes"));
46
+ const routes_6 = __importDefault(require("./src/filesystem/routes"));
47
+ const routes_7 = __importDefault(require("./src/assets/routes"));
48
+ const routes_8 = __importDefault(require("./src/providers/routes"));
49
+ const routes_9 = __importDefault(require("./src/attachments/routes"));
50
+ const routes_10 = __importDefault(require("./src/tasks/routes"));
51
+ const api_1 = __importDefault(require("./src/api"));
52
+ const routes_11 = __importDefault(require("./src/ai/routes"));
53
+ const utils_1 = require("./src/utils/utils");
54
+ const request_1 = __importDefault(require("request"));
55
+ const repositoryManager_1 = require("./src/repositoryManager");
56
+ const taskManager_1 = require("./src/taskManager");
57
+ const commandLineUtils_1 = require("./src/utils/commandLineUtils");
58
+ const DefaultProviderInstaller_1 = require("./src/utils/DefaultProviderInstaller");
59
+ const authManager_1 = require("./src/authManager");
60
+ const codeGeneratorManager_1 = require("./src/codeGeneratorManager");
61
+ const Sentry = __importStar(require("@sentry/node"));
62
+ const assetManager_1 = require("./src/assetManager");
63
+ Sentry.init({
64
+ dsn: 'https://0b7cc946d82c591473d6f95fff5e210b@o4505820837249024.ingest.sentry.io/4506212692000768',
65
+ enabled: process.env.NODE_ENV !== 'development',
66
+ // Performance Monitoring on every ~20th request
67
+ tracesSampleRate: 0.05,
68
+ // Set sampling rate for profiling - this is relative to tracesSampleRate
69
+ profilesSampleRate: 1.0,
70
+ });
71
+ let currentServer = null;
72
+ function createServer() {
73
+ const app = (0, express_1.default)();
74
+ Sentry.addIntegration(new Sentry.Integrations.Http({ tracing: true }));
75
+ Sentry.addIntegration(new Sentry.Integrations.Express({ app }));
76
+ // This causes node < 20 to crash on request.
77
+ //app.use(Sentry.Handlers.requestHandler());
78
+ // TracingHandler creates a trace for every incoming request
79
+ app.use(Sentry.Handlers.tracingHandler());
80
+ app.use('/traffic', routes_1.default);
81
+ app.use('/proxy', routes_2.default);
82
+ app.use('/config', routes_3.default);
83
+ app.use('/instances', routes_4.default);
84
+ app.use('/identities', routes_5.default);
85
+ app.use('/files', routes_6.default);
86
+ app.use('/assets', routes_7.default);
87
+ app.use('/providers', routes_8.default);
88
+ app.use('/attachments', routes_9.default);
89
+ app.use('/tasks', routes_10.default);
90
+ app.use('/api', api_1.default);
91
+ app.use('/ai', routes_11.default);
92
+ app.get('/status', async (req, res) => {
93
+ res.send({
94
+ ok: true,
95
+ dockerStatus: await containerManager_1.containerManager.checkAlive(),
96
+ socketStatus: socketManager_1.socketManager.isAlive(),
97
+ });
98
+ });
99
+ app.get('/ping', async (req, res) => {
100
+ res.send({
101
+ ok: true,
102
+ });
103
+ });
104
+ app.use('/', (req, res) => {
105
+ console.error('Invalid request: %s %s', req.method, req.originalUrl);
106
+ res.status(400).json({
107
+ ok: false,
108
+ error: 'Unknown',
109
+ });
110
+ });
111
+ app.use(Sentry.Handlers.errorHandler());
112
+ /**
113
+ * Central error handler, allows us to return a consistent JSON response wrapper with the error.
114
+ */
115
+ app.use((err, req, res, next) => {
116
+ console.error('Error handling request: %s %s', req.method, req.originalUrl, err);
117
+ res.status(err.status || 500).json({
118
+ ok: false,
119
+ error: err.message || 'Unknown error',
120
+ stack: process.env.NODE_ENV !== 'production' ? err.stack : undefined,
121
+ });
122
+ });
123
+ const server = http_1.default.createServer(app);
124
+ //socket
125
+ const io = new socket_io_1.Server(server, {
126
+ cors: {
127
+ //TODO: This should'nt be hardcoded but also shouldn't be "*"
128
+ origin: 'http://localhost:8080',
129
+ },
130
+ });
131
+ socketManager_1.socketManager.setIo(io);
132
+ return server;
133
+ }
134
+ exports.default = {
135
+ isRunning: function () {
136
+ return !!currentServer;
137
+ },
138
+ getCurrentPort: function () {
139
+ if (!currentServer) {
140
+ return -1;
141
+ }
142
+ return currentServer.port;
143
+ },
144
+ ping: async function (host, port) {
145
+ return new Promise((resolve, reject) => {
146
+ request_1.default.get(`http://${host}:${port}/ping`, (err, res, body) => {
147
+ if (err) {
148
+ reject(err);
149
+ return;
150
+ }
151
+ resolve(JSON.parse(body));
152
+ });
153
+ });
154
+ },
155
+ /**
156
+ * Starts the local cluster service.
157
+ * resolves when listening is done with port number. Rejects if listening failed.
158
+ */
159
+ start: async function () {
160
+ if (currentServer) {
161
+ throw new Error('Server already started');
162
+ }
163
+ try {
164
+ console.log('Testing docker runtime...');
165
+ await containerManager_1.containerManager.initialize();
166
+ }
167
+ catch (e) {
168
+ console.error('Could not ping docker runtime: ' + e.toString() + '. Make sure docker is running and working.');
169
+ }
170
+ await DefaultProviderInstaller_1.defaultProviderInstaller.checkForDefault();
171
+ await codeGeneratorManager_1.codeGeneratorManager.initialize();
172
+ const clusterPort = storageService_1.storageService.get('cluster', 'port');
173
+ if (clusterPort) {
174
+ clusterService_1.clusterService.setClusterServicePort(clusterPort);
175
+ }
176
+ const clusterHost = storageService_1.storageService.get('cluster', 'host');
177
+ if (clusterHost) {
178
+ clusterService_1.clusterService.setClusterServiceHost(clusterHost);
179
+ }
180
+ let pingResult = undefined;
181
+ try {
182
+ pingResult = await this.ping(clusterHost, clusterPort);
183
+ }
184
+ catch (e) {
185
+ //Ignore - expected to not be running since we're starting it
186
+ }
187
+ if (pingResult?.ok) {
188
+ throw new Error(`Cluster service already running on: ${clusterHost}:${clusterPort}.`);
189
+ }
190
+ await clusterService_1.clusterService.init();
191
+ authManager_1.authManager.listenForChanges();
192
+ currentServer = createServer();
193
+ const port = clusterService_1.clusterService.getClusterServicePort();
194
+ const host = clusterService_1.clusterService.getClusterServiceHost();
195
+ if (clusterPort !== port) {
196
+ storageService_1.storageService.put('cluster', 'port', port);
197
+ }
198
+ if (clusterHost !== host) {
199
+ storageService_1.storageService.put('cluster', 'host', host);
200
+ }
201
+ return new Promise((resolve, reject) => {
202
+ if (!currentServer) {
203
+ reject(new Error(`Current server wasn't set`));
204
+ return;
205
+ }
206
+ currentServer.once('error', (err) => {
207
+ if (currentServer) {
208
+ currentServer.close();
209
+ currentServer = null;
210
+ }
211
+ reject(err);
212
+ });
213
+ // On Linux we need to bind to 0.0.0.0 to be able to connect to it from docker containers.
214
+ // TODO: This might pose a security risk - so we should authenticate all requests using a
215
+ // shared secret/nonce that we pass around.
216
+ const bindHost = (0, utils_1.isLinux)() ? '0.0.0.0' : host;
217
+ currentServer.listen(port, bindHost, async () => {
218
+ try {
219
+ const ensureCLITask = await (0, commandLineUtils_1.ensureCLI)();
220
+ if (ensureCLITask) {
221
+ await taskManager_1.taskManager.waitFor((t) => t === ensureCLITask);
222
+ }
223
+ }
224
+ catch (e) {
225
+ console.error('Failed to install CLI.', e);
226
+ }
227
+ try {
228
+ await (0, commandLineUtils_1.ensureCLICommands)();
229
+ }
230
+ catch (error) {
231
+ console.error('Failed to ensure default CLI commands', error);
232
+ }
233
+ try {
234
+ // Start installation process for all default providers
235
+ await repositoryManager_1.repositoryManager.ensureDefaultProviders();
236
+ }
237
+ catch (e) {
238
+ console.error('Failed to install default providers.', e);
239
+ }
240
+ assetManager_1.assetManager.startUpgradeInterval();
241
+ resolve({ host, port, dockerStatus: containerManager_1.containerManager.isAlive() });
242
+ });
243
+ currentServer.host = host;
244
+ currentServer.port = port;
245
+ });
246
+ },
247
+ /**
248
+ * Stops any currently running cluster services.
249
+ * @return {Promise<boolean>} Returns true if the service was stopped - false if no service was running.
250
+ */
251
+ stop: function () {
252
+ if (currentServer) {
253
+ return new Promise(function (resolve) {
254
+ if (currentServer) {
255
+ currentServer.close(() => resolve(true));
256
+ currentServer = null;
257
+ }
258
+ });
259
+ }
260
+ return Promise.resolve(false);
261
+ },
262
+ getServices: () => serviceManager_1.serviceManager.getServices(),
263
+ };
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Copyright 2023 Kapeta Inc.
3
+ * SPDX-License-Identifier: BUSL-1.1
4
+ */
5
+ /// <reference types="node" />
6
+ import { SourceOfChange } from './types';
7
+ import { EventEmitter } from 'node:events';
8
+ export declare class RepositoryWatcher extends EventEmitter {
9
+ private watcher?;
10
+ private disabled;
11
+ private readonly baseDir;
12
+ private allDefinitions;
13
+ private symbolicLinks;
14
+ private sourceOfChange;
15
+ constructor();
16
+ setDisabled(disabled: boolean): void;
17
+ watch(): void;
18
+ setSourceOfChangeFor(file: string, source: SourceOfChange): Promise<void>;
19
+ clearSourceOfChangeFor(file: string): Promise<void>;
20
+ unwatch(): Promise<void>;
21
+ private getAssetIdentity;
22
+ private handleFileChange;
23
+ private getRepositoryPath;
24
+ private checkForChange;
25
+ private exists;
26
+ private removeSymlinkTarget;
27
+ private updateSymlinkTarget;
28
+ private addSymlinkTarget;
29
+ private ignoreFile;
30
+ }