@kapeta/local-cluster-service 0.16.8 → 0.18.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 (96) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/index.js +6 -2
  3. package/dist/cjs/src/assetManager.d.ts +2 -2
  4. package/dist/cjs/src/assetManager.js +16 -16
  5. package/dist/cjs/src/assets/routes.js +2 -2
  6. package/dist/cjs/src/authManager.d.ts +12 -0
  7. package/dist/cjs/src/authManager.js +60 -0
  8. package/dist/cjs/src/codeGeneratorManager.d.ts +1 -1
  9. package/dist/cjs/src/codeGeneratorManager.js +3 -3
  10. package/dist/cjs/src/configManager.js +2 -2
  11. package/dist/cjs/src/definitionsManager.d.ts +7 -6
  12. package/dist/cjs/src/definitionsManager.js +102 -18
  13. package/dist/cjs/src/instanceManager.d.ts +1 -1
  14. package/dist/cjs/src/instanceManager.js +4 -4
  15. package/dist/cjs/src/instances/routes.js +2 -2
  16. package/dist/cjs/src/operatorManager.d.ts +1 -1
  17. package/dist/cjs/src/operatorManager.js +7 -9
  18. package/dist/cjs/src/providerManager.d.ts +2 -1
  19. package/dist/cjs/src/providerManager.js +23 -15
  20. package/dist/cjs/src/repositoryManager.d.ts +2 -2
  21. package/dist/cjs/src/repositoryManager.js +8 -9
  22. package/dist/cjs/src/socketManager.js +6 -0
  23. package/dist/cjs/src/utils/BlockInstanceRunner.js +6 -8
  24. package/dist/cjs/src/utils/DefaultProviderInstaller.d.ts +11 -0
  25. package/dist/cjs/src/utils/DefaultProviderInstaller.js +129 -0
  26. package/dist/esm/index.js +67 -58
  27. package/dist/esm/src/RepositoryWatcher.js +40 -33
  28. package/dist/esm/src/api.js +14 -9
  29. package/dist/esm/src/assetManager.d.ts +2 -2
  30. package/dist/esm/src/assetManager.js +73 -67
  31. package/dist/esm/src/assets/routes.js +23 -18
  32. package/dist/esm/src/attachments/routes.js +14 -9
  33. package/dist/esm/src/authManager.d.ts +12 -0
  34. package/dist/esm/src/authManager.js +60 -0
  35. package/dist/esm/src/cacheManager.js +13 -5
  36. package/dist/esm/src/clusterService.js +6 -3
  37. package/dist/esm/src/codeGeneratorManager.d.ts +1 -1
  38. package/dist/esm/src/codeGeneratorManager.js +20 -14
  39. package/dist/esm/src/config/routes.js +30 -25
  40. package/dist/esm/src/configManager.js +29 -26
  41. package/dist/esm/src/containerManager.js +48 -39
  42. package/dist/esm/src/definitionsManager.d.ts +7 -6
  43. package/dist/esm/src/definitionsManager.js +114 -24
  44. package/dist/esm/src/filesystem/routes.js +21 -16
  45. package/dist/esm/src/filesystemManager.js +23 -17
  46. package/dist/esm/src/identities/routes.js +13 -8
  47. package/dist/esm/src/instanceManager.d.ts +1 -1
  48. package/dist/esm/src/instanceManager.js +165 -158
  49. package/dist/esm/src/instances/routes.js +39 -34
  50. package/dist/esm/src/middleware/cors.js +5 -1
  51. package/dist/esm/src/middleware/kapeta.js +8 -4
  52. package/dist/esm/src/middleware/stringBody.js +5 -1
  53. package/dist/esm/src/networkManager.js +15 -9
  54. package/dist/esm/src/operatorManager.d.ts +1 -1
  55. package/dist/esm/src/operatorManager.js +48 -44
  56. package/dist/esm/src/progressListener.js +16 -12
  57. package/dist/esm/src/providerManager.d.ts +2 -1
  58. package/dist/esm/src/providerManager.js +43 -29
  59. package/dist/esm/src/providers/routes.js +14 -9
  60. package/dist/esm/src/proxy/routes.js +26 -21
  61. package/dist/esm/src/proxy/types/rest.js +29 -22
  62. package/dist/esm/src/proxy/types/web.js +18 -11
  63. package/dist/esm/src/repositoryManager.d.ts +2 -2
  64. package/dist/esm/src/repositoryManager.js +33 -28
  65. package/dist/esm/src/serviceManager.js +25 -19
  66. package/dist/esm/src/socketManager.js +31 -18
  67. package/dist/esm/src/storageService.js +18 -12
  68. package/dist/esm/src/taskManager.js +12 -8
  69. package/dist/esm/src/tasks/routes.js +14 -9
  70. package/dist/esm/src/traffic/routes.js +12 -7
  71. package/dist/esm/src/types.js +11 -8
  72. package/dist/esm/src/utils/BlockInstanceRunner.js +60 -55
  73. package/dist/esm/src/utils/DefaultProviderInstaller.d.ts +11 -0
  74. package/dist/esm/src/utils/DefaultProviderInstaller.js +129 -0
  75. package/dist/esm/src/utils/LogData.js +5 -1
  76. package/dist/esm/src/utils/commandLineUtils.js +12 -7
  77. package/dist/esm/src/utils/pathTemplateParser.js +7 -2
  78. package/dist/esm/src/utils/utils.js +30 -17
  79. package/dist/esm/start.js +7 -2
  80. package/index.ts +7 -2
  81. package/package.json +10 -4
  82. package/src/assetManager.ts +18 -16
  83. package/src/assets/routes.ts +2 -2
  84. package/src/authManager.ts +62 -0
  85. package/src/codeGeneratorManager.ts +3 -3
  86. package/src/configManager.ts +2 -2
  87. package/src/definitionsManager.ts +132 -17
  88. package/src/instanceManager.ts +5 -5
  89. package/src/instances/routes.ts +2 -2
  90. package/src/operatorManager.ts +7 -12
  91. package/src/providerManager.ts +27 -19
  92. package/src/repositoryManager.ts +8 -11
  93. package/src/socketManager.ts +6 -0
  94. package/src/utils/BlockInstanceRunner.ts +6 -8
  95. package/src/utils/DefaultProviderInstaller.ts +141 -0
  96. package/tsconfig.json +3 -2
@@ -1,30 +1,38 @@
1
- import Path from 'path';
2
- import FSExtra from 'fs-extra';
3
- import { definitionsManager } from './definitionsManager';
4
- import { cacheManager } from './cacheManager';
5
- import request from 'request';
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.providerManager = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const definitionsManager_1 = require("./definitionsManager");
10
+ const cacheManager_1 = require("./cacheManager");
11
+ const request_1 = __importDefault(require("request"));
6
12
  const PROVIDER_FILE_BASE = 'https://providers.kapeta.com/files';
7
13
  class ProviderManager {
8
- getWebProviders() {
9
- return definitionsManager.getProviderDefinitions().filter((providerDefinition) => providerDefinition.hasWeb);
14
+ async getWebProviders() {
15
+ const providers = await definitionsManager_1.definitionsManager.getProviderDefinitions();
16
+ return providers.filter((providerDefinition) => providerDefinition.hasWeb);
10
17
  }
11
18
  async getProviderWebJS(handle, name, version, sourceMap = false) {
12
19
  const fullName = `${handle}/${name}`;
13
20
  const id = `${handle}/${name}/${version}/web.js${sourceMap ? '.map' : ''}`;
14
21
  const cacheKey = `provider:web:${id}`;
15
- const file = cacheManager.get(cacheKey);
16
- if (file && (await FSExtra.pathExists(file))) {
17
- return FSExtra.readFile(file, 'utf8');
22
+ const file = cacheManager_1.cacheManager.get(cacheKey);
23
+ if (file && (await fs_extra_1.default.pathExists(file))) {
24
+ return fs_extra_1.default.readFile(file, 'utf8');
18
25
  }
19
- const installedProvider = this.getWebProviders().find((providerDefinition) => {
26
+ const providers = await this.getWebProviders();
27
+ const installedProvider = providers.find((providerDefinition) => {
20
28
  return providerDefinition.definition.metadata.name === fullName && providerDefinition.version === version;
21
29
  });
22
30
  if (installedProvider) {
23
31
  //Check locally installed providers
24
- const path = Path.join(installedProvider.path, 'web', handle, `${name}.js${sourceMap ? '.map' : ''}`);
25
- if (await FSExtra.pathExists(path)) {
26
- cacheManager.set(cacheKey, path, 24 * 60 * 60 * 1000);
27
- return FSExtra.readFile(path);
32
+ const path = path_1.default.join(installedProvider.path, 'web', handle, `${name}.js${sourceMap ? '.map' : ''}`);
33
+ if (await fs_extra_1.default.pathExists(path)) {
34
+ cacheManager_1.cacheManager.set(cacheKey, path, 24 * 60 * 60 * 1000);
35
+ return fs_extra_1.default.readFile(path);
28
36
  }
29
37
  }
30
38
  if (version === 'local') {
@@ -33,7 +41,7 @@ class ProviderManager {
33
41
  const url = `${PROVIDER_FILE_BASE}/${id}`;
34
42
  return new Promise((resolve, reject) => {
35
43
  console.log('Loading provider from %s', url);
36
- request.get(url, (error, response, body) => {
44
+ request_1.default.get(url, (error, response, body) => {
37
45
  if (error) {
38
46
  reject(error);
39
47
  return;
@@ -51,16 +59,22 @@ class ProviderManager {
51
59
  });
52
60
  }
53
61
  }
54
- const providerDefinitions = definitionsManager.getProviderDefinitions();
55
- if (providerDefinitions.length > 0) {
56
- console.log('## Loaded the following providers ##');
57
- providerDefinitions.forEach((providerDefinition) => {
58
- console.log(' - %s[%s:%s]', providerDefinition.definition.kind, providerDefinition.definition.metadata.name, providerDefinition.version);
59
- console.log(' from %s', providerDefinition.path);
60
- });
61
- console.log('##');
62
- }
63
- else {
64
- console.log('## No providers found ##');
65
- }
66
- export const providerManager = new ProviderManager();
62
+ definitionsManager_1.definitionsManager
63
+ .getProviderDefinitions()
64
+ .then((providerDefinitions) => {
65
+ if (providerDefinitions.length > 0) {
66
+ console.log('## Loaded the following providers ##');
67
+ providerDefinitions.forEach((providerDefinition) => {
68
+ console.log(' - %s[%s:%s]', providerDefinition.definition.kind, providerDefinition.definition.metadata.name, providerDefinition.version);
69
+ console.log(' from %s', providerDefinition.path);
70
+ });
71
+ console.log('##');
72
+ }
73
+ else {
74
+ console.log('## No providers found ##');
75
+ }
76
+ })
77
+ .catch((e) => {
78
+ console.error('Failed to load providers', e);
79
+ });
80
+ exports.providerManager = new ProviderManager();
@@ -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;
@@ -12,8 +12,8 @@ declare class RepositoryManager {
12
12
  */
13
13
  setSourceOfChangeFor(file: string, source: SourceOfChange): Promise<void>;
14
14
  clearSourceOfChangeFor(file: string): Promise<void>;
15
- ensureDefaultProviders(): void;
16
- private _install;
15
+ ensureDefaultProviders(): Promise<void>;
16
+ private scheduleInstallation;
17
17
  ensureAsset(handle: string, name: string, version: string, wait?: boolean): Promise<undefined | Task[]>;
18
18
  }
19
19
  export declare const repositoryManager: RepositoryManager;
@@ -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() {
@@ -47,32 +53,32 @@ class RepositoryManager {
47
53
  clearSourceOfChangeFor(file) {
48
54
  return this.watcher.clearSourceOfChangeFor(file);
49
55
  }
50
- ensureDefaultProviders() {
51
- socketManager.emitGlobal(EVENT_DEFAULT_PROVIDERS_START, { providers: DEFAULT_PROVIDERS });
52
- const tasks = this._install(DEFAULT_PROVIDERS);
56
+ async ensureDefaultProviders() {
57
+ socketManager_1.socketManager.emitGlobal(EVENT_DEFAULT_PROVIDERS_START, { providers: DEFAULT_PROVIDERS });
58
+ const tasks = await this.scheduleInstallation(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
- _install(refs) {
63
+ async scheduleInstallation(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 (await 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 (await 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,8 +107,7 @@ class RepositoryManager {
101
107
  //TODO: Get dependencies for local asset
102
108
  return;
103
109
  }
104
- const definitions = definitionsManager.getDefinitions();
105
- const installedAsset = definitions.find((d) => d.definition.metadata.name === fullName && d.version === version);
110
+ const installedAsset = await definitionsManager_1.definitionsManager.getDefinition(`${fullName}:${version}`);
106
111
  let assetVersion;
107
112
  try {
108
113
  assetVersion = await this._registryService.getVersion(fullName, version);
@@ -119,13 +124,13 @@ class RepositoryManager {
119
124
  }
120
125
  let tasks = undefined;
121
126
  if (!installedAsset) {
122
- tasks = this._install([ref]);
127
+ tasks = await this.scheduleInstallation([ref]);
123
128
  }
124
129
  else {
125
130
  //Ensure dependencies are installed
126
131
  const refs = assetVersion.dependencies.map((dep) => dep.name);
127
132
  if (refs.length > 0) {
128
- tasks = this._install(refs);
133
+ tasks = await this.scheduleInstallation(refs);
129
134
  }
130
135
  }
131
136
  if (tasks && wait) {
@@ -134,4 +139,4 @@ class RepositoryManager {
134
139
  return tasks;
135
140
  }
136
141
  }
137
- export const repositoryManager = new RepositoryManager();
142
+ exports.repositoryManager = new RepositoryManager();