@kapeta/local-cluster-service 0.16.7 → 0.17.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 (57) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/index.js +2 -0
  3. package/dist/cjs/src/instanceManager.js +30 -0
  4. package/dist/cjs/src/socketManager.js +6 -0
  5. package/dist/cjs/src/utils/DefaultProviderInstaller.d.ts +11 -0
  6. package/dist/cjs/src/utils/DefaultProviderInstaller.js +129 -0
  7. package/dist/esm/index.js +64 -57
  8. package/dist/esm/src/RepositoryWatcher.js +40 -33
  9. package/dist/esm/src/api.js +14 -9
  10. package/dist/esm/src/assetManager.js +62 -56
  11. package/dist/esm/src/assets/routes.js +22 -17
  12. package/dist/esm/src/attachments/routes.js +14 -9
  13. package/dist/esm/src/cacheManager.js +13 -5
  14. package/dist/esm/src/clusterService.js +6 -3
  15. package/dist/esm/src/codeGeneratorManager.js +19 -13
  16. package/dist/esm/src/config/routes.js +30 -25
  17. package/dist/esm/src/configManager.js +29 -26
  18. package/dist/esm/src/containerManager.js +48 -39
  19. package/dist/esm/src/definitionsManager.js +15 -9
  20. package/dist/esm/src/filesystem/routes.js +21 -16
  21. package/dist/esm/src/filesystemManager.js +23 -17
  22. package/dist/esm/src/identities/routes.js +13 -8
  23. package/dist/esm/src/instanceManager.js +186 -149
  24. package/dist/esm/src/instances/routes.js +38 -33
  25. package/dist/esm/src/middleware/cors.js +5 -1
  26. package/dist/esm/src/middleware/kapeta.js +8 -4
  27. package/dist/esm/src/middleware/stringBody.js +5 -1
  28. package/dist/esm/src/networkManager.js +15 -9
  29. package/dist/esm/src/operatorManager.js +45 -39
  30. package/dist/esm/src/progressListener.js +16 -12
  31. package/dist/esm/src/providerManager.js +22 -16
  32. package/dist/esm/src/providers/routes.js +14 -9
  33. package/dist/esm/src/proxy/routes.js +26 -21
  34. package/dist/esm/src/proxy/types/rest.js +29 -22
  35. package/dist/esm/src/proxy/types/web.js +18 -11
  36. package/dist/esm/src/repositoryManager.js +28 -22
  37. package/dist/esm/src/serviceManager.js +25 -19
  38. package/dist/esm/src/socketManager.js +31 -18
  39. package/dist/esm/src/storageService.js +18 -12
  40. package/dist/esm/src/taskManager.js +12 -8
  41. package/dist/esm/src/tasks/routes.js +14 -9
  42. package/dist/esm/src/traffic/routes.js +12 -7
  43. package/dist/esm/src/types.js +11 -8
  44. package/dist/esm/src/utils/BlockInstanceRunner.js +57 -50
  45. package/dist/esm/src/utils/DefaultProviderInstaller.d.ts +11 -0
  46. package/dist/esm/src/utils/DefaultProviderInstaller.js +129 -0
  47. package/dist/esm/src/utils/LogData.js +5 -1
  48. package/dist/esm/src/utils/commandLineUtils.js +12 -7
  49. package/dist/esm/src/utils/pathTemplateParser.js +7 -2
  50. package/dist/esm/src/utils/utils.js +30 -17
  51. package/dist/esm/start.js +7 -2
  52. package/index.ts +3 -0
  53. package/package.json +10 -4
  54. package/src/instanceManager.ts +34 -8
  55. package/src/socketManager.ts +6 -0
  56. package/src/utils/DefaultProviderInstaller.ts +141 -0
  57. package/tsconfig.json +3 -2
@@ -1,15 +1,20 @@
1
- import Router from 'express-promise-router';
2
- import { providerManager } from '../providerManager';
3
- import { corsHandler } from '../middleware/cors';
4
- const router = Router();
5
- router.use('/', corsHandler);
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const express_promise_router_1 = __importDefault(require("express-promise-router"));
7
+ const providerManager_1 = require("../providerManager");
8
+ const cors_1 = require("../middleware/cors");
9
+ const router = (0, express_promise_router_1.default)();
10
+ router.use('/', cors_1.corsHandler);
6
11
  router.get('/', async (req, res) => {
7
- const result = await providerManager.getWebProviders();
12
+ const result = await providerManager_1.providerManager.getWebProviders();
8
13
  res.send(result);
9
14
  });
10
15
  router.get('/asset/:handle/:name/:version/web.js', async (req, res) => {
11
16
  const { handle, name, version } = req.params;
12
- let result = await providerManager.getProviderWebJS(handle, name, version);
17
+ let result = await providerManager_1.providerManager.getProviderWebJS(handle, name, version);
13
18
  if (!result) {
14
19
  res.status(404).send('');
15
20
  }
@@ -22,7 +27,7 @@ router.get('/asset/:handle/:name/:version/web.js', async (req, res) => {
22
27
  });
23
28
  router.get('/asset/:handle/:name/:version/web.js.map', async (req, res) => {
24
29
  const { handle, name, version } = req.params;
25
- const result = await providerManager.getProviderWebJS(handle, name, version, true);
30
+ const result = await providerManager_1.providerManager.getProviderWebJS(handle, name, version, true);
26
31
  if (!result) {
27
32
  res.status(404).send('');
28
33
  }
@@ -34,4 +39,4 @@ router.get('/asset/:handle/:name/:version/web.js.map', async (req, res) => {
34
39
  res.send(result);
35
40
  }
36
41
  });
37
- export default router;
42
+ exports.default = router;
@@ -1,25 +1,30 @@
1
- import Router from 'express-promise-router';
2
- import { proxyRestRequest } from './types/rest';
3
- import { proxyWebRequest } from './types/web';
4
- import { stringBody } from '../middleware/stringBody';
5
- import { serviceManager } from '../serviceManager';
6
- import { clusterService } from '../clusterService';
7
- import { assetManager } from '../assetManager';
8
- import _ from 'lodash';
9
- const router = Router();
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const express_promise_router_1 = __importDefault(require("express-promise-router"));
7
+ const rest_1 = require("./types/rest");
8
+ const web_1 = require("./types/web");
9
+ const stringBody_1 = require("../middleware/stringBody");
10
+ const serviceManager_1 = require("../serviceManager");
11
+ const clusterService_1 = require("../clusterService");
12
+ const assetManager_1 = require("../assetManager");
13
+ const lodash_1 = __importDefault(require("lodash"));
14
+ const router = (0, express_promise_router_1.default)();
10
15
  /**
11
16
  * @var {{[key:string]:ProxyRequestHandler}}
12
17
  */
13
18
  const TYPE_HANDLERS = {
14
- rest: proxyRestRequest,
15
- web: proxyWebRequest,
19
+ rest: rest_1.proxyRestRequest,
20
+ web: web_1.proxyWebRequest,
16
21
  };
17
22
  function getResource(resources, resourceName) {
18
23
  return resources.find((resource) => {
19
24
  return resource.metadata.name.toLowerCase() === resourceName.toLowerCase();
20
25
  });
21
26
  }
22
- router.use('/:systemId/:consumerInstanceId/:consumerResourceName', stringBody);
27
+ router.use('/:systemId/:consumerInstanceId/:consumerResourceName', stringBody_1.stringBody);
23
28
  router.all('/:systemId/:consumerInstanceId/:consumerResourceName/:type/*', async (req, res) => {
24
29
  try {
25
30
  const typeHandler = TYPE_HANDLERS[req.params.type.toLowerCase()];
@@ -27,10 +32,10 @@ router.all('/:systemId/:consumerInstanceId/:consumerResourceName/:type/*', async
27
32
  res.status(401).send({ error: 'Unknown connection type: ' + req.params.type });
28
33
  return;
29
34
  }
30
- const plan = await assetManager.getPlan(req.params.systemId);
35
+ const plan = await assetManager_1.assetManager.getPlan(req.params.systemId);
31
36
  // We can find the connection by the consumer information alone since
32
37
  // only 1 provider can be connected to a consumer resource at a time
33
- const connection = _.find(plan.spec.connections, (connection) => {
38
+ const connection = lodash_1.default.find(plan.spec.connections, (connection) => {
34
39
  return (connection.consumer.blockId.toLowerCase() === req.params.consumerInstanceId.toLowerCase() &&
35
40
  connection.consumer.resourceName.toLowerCase() === req.params.consumerResourceName.toLowerCase());
36
41
  });
@@ -40,14 +45,14 @@ router.all('/:systemId/:consumerInstanceId/:consumerResourceName/:type/*', async
40
45
  });
41
46
  return;
42
47
  }
43
- const toBlockInstance = _.find(plan.spec.blocks, (blockInstance) => {
48
+ const toBlockInstance = lodash_1.default.find(plan.spec.blocks, (blockInstance) => {
44
49
  return blockInstance.id.toLowerCase() === connection.consumer.blockId.toLowerCase();
45
50
  });
46
51
  if (!toBlockInstance) {
47
52
  res.status(401).send({ error: `Block instance not found "${req.params.consumerInstanceId}` });
48
53
  return;
49
54
  }
50
- const toBlockAsset = await assetManager.getAsset(toBlockInstance.block.ref);
55
+ const toBlockAsset = await assetManager_1.assetManager.getAsset(toBlockInstance.block.ref);
51
56
  if (!toBlockAsset) {
52
57
  res.status(401).send({ error: `Block asset not found "${toBlockInstance.block.ref}` });
53
58
  return;
@@ -59,15 +64,15 @@ router.all('/:systemId/:consumerInstanceId/:consumerResourceName/:type/*', async
59
64
  });
60
65
  return;
61
66
  }
62
- const basePath = clusterService.getProxyPath(req.params.systemId, req.params.consumerInstanceId, req.params.consumerResourceName, req.params.type);
63
- const fromBlockInstance = _.find(plan.spec.blocks, (blockInstance) => {
67
+ const basePath = clusterService_1.clusterService.getProxyPath(req.params.systemId, req.params.consumerInstanceId, req.params.consumerResourceName, req.params.type);
68
+ const fromBlockInstance = lodash_1.default.find(plan.spec.blocks, (blockInstance) => {
64
69
  return blockInstance.id.toLowerCase() === connection.provider.blockId.toLowerCase();
65
70
  });
66
71
  if (!fromBlockInstance) {
67
72
  res.status(401).send({ error: `Block instance not found "${connection.provider.blockId}` });
68
73
  return;
69
74
  }
70
- const fromBlockAsset = await assetManager.getAsset(fromBlockInstance.block.ref);
75
+ const fromBlockAsset = await assetManager_1.assetManager.getAsset(fromBlockInstance.block.ref);
71
76
  if (!fromBlockAsset) {
72
77
  res.status(401).send({ error: `Block asset not found "${fromBlockInstance.block.ref}` });
73
78
  return;
@@ -80,7 +85,7 @@ router.all('/:systemId/:consumerInstanceId/:consumerResourceName/:type/*', async
80
85
  return;
81
86
  }
82
87
  //Get target address
83
- let address = await serviceManager.getProviderAddress(req.params.systemId, connection.provider.blockId, req.params.type);
88
+ let address = await serviceManager_1.serviceManager.getProviderAddress(req.params.systemId, connection.provider.blockId, req.params.type);
84
89
  while (address.endsWith('/')) {
85
90
  address = address.substring(0, address.length - 1);
86
91
  }
@@ -103,4 +108,4 @@ router.all('/:systemId/:consumerInstanceId/:consumerResourceName/:type/*', async
103
108
  res.status(400).send({ error: err.message });
104
109
  }
105
110
  });
106
- export default router;
111
+ exports.default = router;
@@ -1,20 +1,26 @@
1
- import _ from 'lodash';
2
- import request from 'request';
3
- import Path from 'path';
4
- import { pathTemplateParser } from '../../utils/pathTemplateParser';
5
- import { networkManager } from '../../networkManager';
6
- import { socketManager } from '../../socketManager';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.proxyRestRequest = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const request_1 = __importDefault(require("request"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const pathTemplateParser_1 = require("../../utils/pathTemplateParser");
11
+ const networkManager_1 = require("../../networkManager");
12
+ const socketManager_1 = require("../../socketManager");
7
13
  function getRestMethodId(restResource, httpMethod, httpPath) {
8
- return _.findKey(restResource.spec.methods, (method) => {
14
+ return lodash_1.default.findKey(restResource.spec.methods, (method) => {
9
15
  let methodType = method.method ? method.method.toUpperCase() : 'GET';
10
16
  if (methodType.toUpperCase() !== httpMethod.toUpperCase()) {
11
17
  return false;
12
18
  }
13
19
  let path = method.path;
14
20
  if (restResource.spec.basePath) {
15
- path = Path.join(restResource.spec.basePath, path);
21
+ path = path_1.default.join(restResource.spec.basePath, path);
16
22
  }
17
- const pathTemplate = pathTemplateParser(path);
23
+ const pathTemplate = (0, pathTemplateParser_1.pathTemplateParser)(path);
18
24
  return pathTemplate.matches(httpPath);
19
25
  });
20
26
  }
@@ -29,18 +35,18 @@ function resolveMethods(req, opts) {
29
35
  if (!consumerMethodId) {
30
36
  throw new Error(`Consumer method not found for path "${req.method} ${opts.consumerPath}" in resource "${req.params.consumerInstanceId}::${req.params.consumerResourceName}`);
31
37
  }
32
- const consumerMethod = _.cloneDeep(opts.consumerResource.spec.methods[consumerMethodId]);
38
+ const consumerMethod = lodash_1.default.cloneDeep(opts.consumerResource.spec.methods[consumerMethodId]);
33
39
  if (!consumerMethod) {
34
40
  throw new Error(`Consumer method not found for path "${req.method} ${opts.consumerPath}" in resource "${req.params.consumerInstanceId}::${req.params.consumerResourceName}`);
35
41
  }
36
42
  consumerMethod.id = consumerMethodId;
37
- const providerMethodId = _.findKey(opts.connection.mapping, (mapping) => {
43
+ const providerMethodId = lodash_1.default.findKey(opts.connection.mapping, (mapping) => {
38
44
  return mapping.targetId === consumerMethodId;
39
45
  });
40
46
  if (!providerMethodId) {
41
47
  throw new Error(`Connection contained no mapping for consumer method "${consumerMethodId}`);
42
48
  }
43
- const providerMethod = _.cloneDeep(opts.providerResource.spec.methods[providerMethodId]);
49
+ const providerMethod = lodash_1.default.cloneDeep(opts.providerResource.spec.methods[providerMethodId]);
44
50
  if (!providerMethod) {
45
51
  throw new Error(`Provider method not found "${providerMethodId}" in resource "${opts.connection.provider.blockId}::${opts.connection.provider.resourceName}`);
46
52
  }
@@ -50,10 +56,10 @@ function resolveMethods(req, opts) {
50
56
  providerMethod,
51
57
  };
52
58
  }
53
- export function proxyRestRequest(req, res, opts) {
59
+ function proxyRestRequest(req, res, opts) {
54
60
  let { consumerMethod, providerMethod } = resolveMethods(req, opts);
55
- const consumerPathTemplate = pathTemplateParser(consumerMethod.path);
56
- const providerPathTemplate = pathTemplateParser(providerMethod.path);
61
+ const consumerPathTemplate = (0, pathTemplateParser_1.pathTemplateParser)(consumerMethod.path);
62
+ const providerPathTemplate = (0, pathTemplateParser_1.pathTemplateParser)(providerMethod.path);
57
63
  const pathVariables = consumerPathTemplate.parse(opts.consumerPath);
58
64
  if (!pathVariables) {
59
65
  res.status(400).send({
@@ -65,7 +71,7 @@ export function proxyRestRequest(req, res, opts) {
65
71
  if (!providerPath.startsWith('/')) {
66
72
  providerPath = '/' + providerPath;
67
73
  }
68
- const requestHeaders = _.clone(req.headers);
74
+ const requestHeaders = lodash_1.default.clone(req.headers);
69
75
  delete requestHeaders['content-length'];
70
76
  delete requestHeaders['content-encoding'];
71
77
  delete requestHeaders['connection'];
@@ -78,16 +84,16 @@ export function proxyRestRequest(req, res, opts) {
78
84
  body: req.stringBody,
79
85
  headers: requestHeaders,
80
86
  };
81
- const traffic = networkManager.addRequest(req.params.systemId, opts.connection, reqOpts, consumerMethod.id, providerMethod.id);
82
- socketManager.emit(traffic.connectionId, 'traffic_start', traffic);
83
- request(reqOpts, function (err, response, responseBody) {
87
+ const traffic = networkManager_1.networkManager.addRequest(req.params.systemId, opts.connection, reqOpts, consumerMethod.id, providerMethod.id);
88
+ socketManager_1.socketManager.emit(traffic.connectionId, 'traffic_start', traffic);
89
+ (0, request_1.default)(reqOpts, function (err, response, responseBody) {
84
90
  if (err) {
85
91
  traffic.asError(err);
86
- socketManager.emit(traffic.connectionId, 'traffic_end', traffic);
92
+ socketManager_1.socketManager.emit(traffic.connectionId, 'traffic_end', traffic);
87
93
  res.status(500).send({ error: '' + err });
88
94
  return;
89
95
  }
90
- const responseHeaders = _.clone(response.headers);
96
+ const responseHeaders = lodash_1.default.clone(response.headers);
91
97
  delete responseHeaders['content-length'];
92
98
  delete responseHeaders['content-encoding'];
93
99
  delete responseHeaders['connection'];
@@ -98,10 +104,11 @@ export function proxyRestRequest(req, res, opts) {
98
104
  headers: response.headers,
99
105
  body: responseBody,
100
106
  });
101
- socketManager.emit(traffic.connectionId, 'traffic_end', traffic);
107
+ socketManager_1.socketManager.emit(traffic.connectionId, 'traffic_end', traffic);
102
108
  if (responseBody) {
103
109
  res.write(responseBody);
104
110
  }
105
111
  res.end();
106
112
  });
107
113
  }
114
+ exports.proxyRestRequest = proxyRestRequest;
@@ -1,9 +1,15 @@
1
- import request from 'request';
2
- import _ from 'lodash';
3
- import { networkManager } from '../../networkManager';
4
- import { socketManager } from '../../socketManager';
5
- export function proxyWebRequest(req, res, opts) {
6
- const requestHeaders = _.clone(req.headers);
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.proxyWebRequest = void 0;
7
+ const request_1 = __importDefault(require("request"));
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const networkManager_1 = require("../../networkManager");
10
+ const socketManager_1 = require("../../socketManager");
11
+ function proxyWebRequest(req, res, opts) {
12
+ const requestHeaders = lodash_1.default.clone(req.headers);
7
13
  delete requestHeaders['content-length'];
8
14
  delete requestHeaders['content-encoding'];
9
15
  delete requestHeaders['connection'];
@@ -22,12 +28,12 @@ export function proxyWebRequest(req, res, opts) {
22
28
  headers: requestHeaders,
23
29
  body: req.stringBody,
24
30
  };
25
- const traffic = networkManager.addRequest(req.params.systemId, opts.connection, reqOpts);
26
- socketManager.emit(traffic.connectionId, 'traffic_start', traffic);
27
- const proxyReq = request(reqOpts);
31
+ const traffic = networkManager_1.networkManager.addRequest(req.params.systemId, opts.connection, reqOpts);
32
+ socketManager_1.socketManager.emit(traffic.connectionId, 'traffic_start', traffic);
33
+ const proxyReq = (0, request_1.default)(reqOpts);
28
34
  proxyReq.on('error', function (err) {
29
35
  traffic.asError(err);
30
- socketManager.emit(traffic.connectionId, 'traffic_end', traffic);
36
+ socketManager_1.socketManager.emit(traffic.connectionId, 'traffic_end', traffic);
31
37
  if (!res.headersSent) {
32
38
  res.status(500).send({ error: '' + err });
33
39
  }
@@ -39,8 +45,9 @@ export function proxyWebRequest(req, res, opts) {
39
45
  headers: response.headers,
40
46
  body: null,
41
47
  });
42
- socketManager.emit(traffic.connectionId, 'traffic_end', traffic);
48
+ socketManager_1.socketManager.emit(traffic.connectionId, 'traffic_end', traffic);
43
49
  });
44
50
  //We need to pipe the proxy response to the client response to handle sockets and event streams
45
51
  proxyReq.pipe(res);
46
52
  }
53
+ exports.proxyWebRequest = proxyWebRequest;
@@ -1,12 +1,18 @@
1
- import os from 'node:os';
2
- import { socketManager } from './socketManager';
3
- import { Actions, Config, RegistryService } from '@kapeta/nodejs-registry-utils';
4
- import { definitionsManager } from './definitionsManager';
5
- import { taskManager } from './taskManager';
6
- import { normalizeKapetaUri } from './utils/utils';
7
- import { ProgressListener } from './progressListener';
8
- import { RepositoryWatcher } from './RepositoryWatcher';
9
- import { cacheManager } from './cacheManager';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.repositoryManager = void 0;
7
+ const node_os_1 = __importDefault(require("node:os"));
8
+ const socketManager_1 = require("./socketManager");
9
+ const nodejs_registry_utils_1 = require("@kapeta/nodejs-registry-utils");
10
+ const definitionsManager_1 = require("./definitionsManager");
11
+ const taskManager_1 = require("./taskManager");
12
+ const utils_1 = require("./utils/utils");
13
+ const progressListener_1 = require("./progressListener");
14
+ const RepositoryWatcher_1 = require("./RepositoryWatcher");
15
+ const cacheManager_1 = require("./cacheManager");
10
16
  const EVENT_DEFAULT_PROVIDERS_START = 'default-providers-start';
11
17
  const EVENT_DEFAULT_PROVIDERS_END = 'default-providers-end';
12
18
  const DEFAULT_PROVIDERS = [
@@ -27,8 +33,8 @@ class RepositoryManager {
27
33
  _registryService;
28
34
  watcher;
29
35
  constructor() {
30
- this._registryService = new RegistryService(Config.data.registry.url);
31
- this.watcher = new RepositoryWatcher();
36
+ this._registryService = new nodejs_registry_utils_1.RegistryService(nodejs_registry_utils_1.Config.data.registry.url);
37
+ this.watcher = new RepositoryWatcher_1.RepositoryWatcher();
32
38
  this.listenForChanges();
33
39
  }
34
40
  listenForChanges() {
@@ -48,31 +54,31 @@ class RepositoryManager {
48
54
  return this.watcher.clearSourceOfChangeFor(file);
49
55
  }
50
56
  ensureDefaultProviders() {
51
- socketManager.emitGlobal(EVENT_DEFAULT_PROVIDERS_START, { providers: DEFAULT_PROVIDERS });
57
+ socketManager_1.socketManager.emitGlobal(EVENT_DEFAULT_PROVIDERS_START, { providers: DEFAULT_PROVIDERS });
52
58
  const tasks = this._install(DEFAULT_PROVIDERS);
53
59
  Promise.allSettled(tasks.map((t) => t.wait())).then(() => {
54
- socketManager.emitGlobal(EVENT_DEFAULT_PROVIDERS_END, {});
60
+ socketManager_1.socketManager.emitGlobal(EVENT_DEFAULT_PROVIDERS_END, {});
55
61
  });
56
62
  }
57
63
  _install(refs) {
58
64
  //We make sure to only install one asset at a time - otherwise unexpected things might happen
59
65
  const createInstaller = (ref) => {
60
66
  return async () => {
61
- if (definitionsManager.exists(ref)) {
67
+ if (definitionsManager_1.definitionsManager.exists(ref)) {
62
68
  return;
63
69
  }
64
70
  //console.log(`Installing asset: ${ref}`);
65
71
  //Auto-install missing asset
66
72
  try {
67
73
  //We change to a temp dir to avoid issues with the current working directory
68
- process.chdir(os.tmpdir());
69
- await Actions.install(new ProgressListener(), [ref], {});
74
+ process.chdir(node_os_1.default.tmpdir());
75
+ await nodejs_registry_utils_1.Actions.install(new progressListener_1.ProgressListener(), [ref], {});
70
76
  }
71
77
  catch (e) {
72
78
  console.error(`Failed to install asset: ${ref}`, e);
73
79
  throw e;
74
80
  }
75
- cacheManager.flush();
81
+ cacheManager_1.cacheManager.flush();
76
82
  //console.log(`Asset installed: ${ref}`);
77
83
  };
78
84
  };
@@ -82,11 +88,11 @@ class RepositoryManager {
82
88
  if (!ref) {
83
89
  continue;
84
90
  }
85
- ref = normalizeKapetaUri(ref);
86
- if (definitionsManager.exists(ref)) {
91
+ ref = (0, utils_1.normalizeKapetaUri)(ref);
92
+ if (definitionsManager_1.definitionsManager.exists(ref)) {
87
93
  continue;
88
94
  }
89
- const task = taskManager.add(`asset:install:${ref}`, createInstaller(ref), {
95
+ const task = taskManager_1.taskManager.add(`asset:install:${ref}`, createInstaller(ref), {
90
96
  name: `Installing ${ref}`,
91
97
  group: 'asset:install:', //Group prevents multiple tasks from running at the same time
92
98
  });
@@ -101,7 +107,7 @@ class RepositoryManager {
101
107
  //TODO: Get dependencies for local asset
102
108
  return;
103
109
  }
104
- const definitions = definitionsManager.getDefinitions();
110
+ const definitions = definitionsManager_1.definitionsManager.getDefinitions();
105
111
  const installedAsset = definitions.find((d) => d.definition.metadata.name === fullName && d.version === version);
106
112
  let assetVersion;
107
113
  try {
@@ -134,4 +140,4 @@ class RepositoryManager {
134
140
  return tasks;
135
141
  }
136
142
  }
137
- export const repositoryManager = new RepositoryManager();
143
+ exports.repositoryManager = new RepositoryManager();
@@ -1,19 +1,25 @@
1
- import _ from 'lodash';
2
- import { clusterService } from './clusterService';
3
- import { storageService } from './storageService';
4
- import { normalizeKapetaUri } from './utils/utils';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.serviceManager = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const clusterService_1 = require("./clusterService");
9
+ const storageService_1 = require("./storageService");
10
+ const utils_1 = require("./utils/utils");
5
11
  const DEFAULT_PORT_TYPE = 'rest';
6
12
  class ServiceManager {
7
13
  _systems;
8
14
  constructor() {
9
- this._systems = storageService.get('services');
15
+ this._systems = storageService_1.storageService.get('services');
10
16
  if (!this._systems) {
11
17
  this._systems = {};
12
18
  }
13
- _.forEach(this._systems, (system) => {
14
- _.forEach(system, (services) => {
15
- _.forEach(services, (portInfo) => {
16
- clusterService.reservePort(portInfo.port);
19
+ lodash_1.default.forEach(this._systems, (system) => {
20
+ lodash_1.default.forEach(system, (services) => {
21
+ lodash_1.default.forEach(services, (portInfo) => {
22
+ clusterService_1.clusterService.reservePort(portInfo.port);
17
23
  });
18
24
  });
19
25
  });
@@ -28,7 +34,7 @@ class ServiceManager {
28
34
  host = 'host.docker.internal';
29
35
  }
30
36
  else {
31
- host = clusterService.getClusterServiceHost();
37
+ host = clusterService_1.clusterService.getClusterServiceHost();
32
38
  }
33
39
  if (path.startsWith('/')) {
34
40
  path = path.substring(1);
@@ -36,7 +42,7 @@ class ServiceManager {
36
42
  return `http://${host}:${port}/${path}`;
37
43
  }
38
44
  _ensureSystem(systemId) {
39
- systemId = normalizeKapetaUri(systemId);
45
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
40
46
  if (!this._systems[systemId]) {
41
47
  this._systems[systemId] = {};
42
48
  }
@@ -50,13 +56,13 @@ class ServiceManager {
50
56
  return system[serviceId];
51
57
  }
52
58
  async ensureServicePort(systemId, blockInstanceId, portType = DEFAULT_PORT_TYPE) {
53
- systemId = normalizeKapetaUri(systemId);
59
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
54
60
  if (!portType) {
55
61
  portType = DEFAULT_PORT_TYPE;
56
62
  }
57
63
  const service = this._ensureService(systemId, blockInstanceId);
58
64
  if (!service[portType]) {
59
- const port = await clusterService.getNextAvailablePort();
65
+ const port = await clusterService_1.clusterService.getNextAvailablePort();
60
66
  service[portType] = { port };
61
67
  this._save();
62
68
  }
@@ -64,7 +70,7 @@ class ServiceManager {
64
70
  return portTypeSection.port;
65
71
  }
66
72
  _save() {
67
- storageService.put('services', this._systems);
73
+ storageService_1.storageService.put('services', this._systems);
68
74
  }
69
75
  /**
70
76
  * Gets the consumable address of a service block resource
@@ -73,9 +79,9 @@ class ServiceManager {
73
79
  *
74
80
  */
75
81
  getConsumerAddress(systemId, consumerInstanceId, consumerResourceName, portType, environmentType) {
76
- systemId = normalizeKapetaUri(systemId);
77
- const port = clusterService.getClusterServicePort();
78
- const path = clusterService.getProxyPath(systemId, consumerInstanceId, consumerResourceName, portType);
82
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
83
+ const port = clusterService_1.clusterService.getClusterServicePort();
84
+ const path = clusterService_1.clusterService.getProxyPath(systemId, consumerInstanceId, consumerResourceName, portType);
79
85
  return this._forLocal(port, path, environmentType);
80
86
  }
81
87
  /**
@@ -87,7 +93,7 @@ class ServiceManager {
87
93
  *
88
94
  */
89
95
  async getProviderAddress(systemId, providerInstanceId, portType) {
90
- systemId = normalizeKapetaUri(systemId);
96
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
91
97
  const port = await this.ensureServicePort(systemId, providerInstanceId, portType);
92
98
  return this._forLocal(port);
93
99
  }
@@ -95,4 +101,4 @@ class ServiceManager {
95
101
  return this._systems;
96
102
  }
97
103
  }
98
- export const serviceManager = new ServiceManager();
104
+ exports.serviceManager = new ServiceManager();
@@ -1,12 +1,18 @@
1
- import _ from 'lodash';
2
- import { normalizeKapetaUri } from './utils/utils';
3
- export const EVENT_STATUS_CHANGED = 'status-changed';
4
- export const EVENT_INSTANCE_CREATED = 'instance-created';
5
- export const EVENT_INSTANCE_EXITED = 'instance-exited';
6
- export const EVENT_INSTANCE_LOG = 'instance-log';
7
- export const EVENT_SYSTEM_LOG = 'system-log';
8
- export const EVENT_LOG = 'log';
9
- export class SocketManager {
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.socketManager = exports.SocketManager = exports.EVENT_LOG = exports.EVENT_SYSTEM_LOG = exports.EVENT_INSTANCE_LOG = exports.EVENT_INSTANCE_EXITED = exports.EVENT_INSTANCE_CREATED = exports.EVENT_STATUS_CHANGED = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const utils_1 = require("./utils/utils");
9
+ exports.EVENT_STATUS_CHANGED = 'status-changed';
10
+ exports.EVENT_INSTANCE_CREATED = 'instance-created';
11
+ exports.EVENT_INSTANCE_EXITED = 'instance-exited';
12
+ exports.EVENT_INSTANCE_LOG = 'instance-log';
13
+ exports.EVENT_SYSTEM_LOG = 'system-log';
14
+ exports.EVENT_LOG = 'log';
15
+ class SocketManager {
10
16
  _io;
11
17
  _sockets;
12
18
  constructor() {
@@ -28,33 +34,39 @@ export class SocketManager {
28
34
  return this._io;
29
35
  }
30
36
  emit(context, type, payload) {
37
+ if (!this._io) {
38
+ return;
39
+ }
31
40
  this.io.to(context).emit(type, { context, payload });
32
41
  }
33
42
  emitGlobal(type, payload) {
43
+ if (!this._io) {
44
+ return;
45
+ }
34
46
  this.io.emit(type, payload);
35
47
  }
36
48
  emitSystemEvent(systemId, type, payload) {
37
- systemId = normalizeKapetaUri(systemId);
49
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
38
50
  try {
39
- socketManager.emit(`${systemId}/instances`, type, payload);
51
+ exports.socketManager.emit(`${systemId}/instances`, type, payload);
40
52
  }
41
53
  catch (e) {
42
54
  console.warn('Failed to emit instance event: %s', e.message);
43
55
  }
44
56
  }
45
57
  emitInstanceLog(systemId, instanceId, payload) {
46
- this.emitInstanceEvent(systemId, instanceId, EVENT_INSTANCE_LOG, payload);
58
+ this.emitInstanceEvent(systemId, instanceId, exports.EVENT_INSTANCE_LOG, payload);
47
59
  }
48
60
  emitSystemLog(systemId, payload) {
49
- this.emitSystemEvent(systemId, EVENT_SYSTEM_LOG, payload);
61
+ this.emitSystemEvent(systemId, exports.EVENT_SYSTEM_LOG, payload);
50
62
  }
51
63
  emitGlobalLog(payload) {
52
- this.emitGlobal(EVENT_LOG, payload);
64
+ this.emitGlobal(exports.EVENT_LOG, payload);
53
65
  }
54
66
  emitInstanceEvent(systemId, instanceId, type, payload) {
55
- systemId = normalizeKapetaUri(systemId);
67
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
56
68
  try {
57
- socketManager.emit(`${systemId}/instances/${instanceId}`, type, payload);
69
+ exports.socketManager.emit(`${systemId}/instances/${instanceId}`, type, payload);
58
70
  }
59
71
  catch (e) {
60
72
  console.warn('Failed to emit instance event: %s', e.message);
@@ -77,7 +89,8 @@ export class SocketManager {
77
89
  });
78
90
  }
79
91
  _handleSocketDestroyed(socket) {
80
- _.pull(this._sockets, socket);
92
+ lodash_1.default.pull(this._sockets, socket);
81
93
  }
82
94
  }
83
- export const socketManager = new SocketManager();
95
+ exports.SocketManager = SocketManager;
96
+ exports.socketManager = new SocketManager();