@kapeta/local-cluster-service 0.16.8 → 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 (56) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/index.js +2 -0
  3. package/dist/cjs/src/socketManager.js +6 -0
  4. package/dist/cjs/src/utils/DefaultProviderInstaller.d.ts +11 -0
  5. package/dist/cjs/src/utils/DefaultProviderInstaller.js +129 -0
  6. package/dist/esm/index.js +64 -57
  7. package/dist/esm/src/RepositoryWatcher.js +40 -33
  8. package/dist/esm/src/api.js +14 -9
  9. package/dist/esm/src/assetManager.js +62 -56
  10. package/dist/esm/src/assets/routes.js +22 -17
  11. package/dist/esm/src/attachments/routes.js +14 -9
  12. package/dist/esm/src/cacheManager.js +13 -5
  13. package/dist/esm/src/clusterService.js +6 -3
  14. package/dist/esm/src/codeGeneratorManager.js +19 -13
  15. package/dist/esm/src/config/routes.js +30 -25
  16. package/dist/esm/src/configManager.js +29 -26
  17. package/dist/esm/src/containerManager.js +48 -39
  18. package/dist/esm/src/definitionsManager.js +15 -9
  19. package/dist/esm/src/filesystem/routes.js +21 -16
  20. package/dist/esm/src/filesystemManager.js +23 -17
  21. package/dist/esm/src/identities/routes.js +13 -8
  22. package/dist/esm/src/instanceManager.js +163 -156
  23. package/dist/esm/src/instances/routes.js +38 -33
  24. package/dist/esm/src/middleware/cors.js +5 -1
  25. package/dist/esm/src/middleware/kapeta.js +8 -4
  26. package/dist/esm/src/middleware/stringBody.js +5 -1
  27. package/dist/esm/src/networkManager.js +15 -9
  28. package/dist/esm/src/operatorManager.js +45 -39
  29. package/dist/esm/src/progressListener.js +16 -12
  30. package/dist/esm/src/providerManager.js +22 -16
  31. package/dist/esm/src/providers/routes.js +14 -9
  32. package/dist/esm/src/proxy/routes.js +26 -21
  33. package/dist/esm/src/proxy/types/rest.js +29 -22
  34. package/dist/esm/src/proxy/types/web.js +18 -11
  35. package/dist/esm/src/repositoryManager.js +28 -22
  36. package/dist/esm/src/serviceManager.js +25 -19
  37. package/dist/esm/src/socketManager.js +31 -18
  38. package/dist/esm/src/storageService.js +18 -12
  39. package/dist/esm/src/taskManager.js +12 -8
  40. package/dist/esm/src/tasks/routes.js +14 -9
  41. package/dist/esm/src/traffic/routes.js +12 -7
  42. package/dist/esm/src/types.js +11 -8
  43. package/dist/esm/src/utils/BlockInstanceRunner.js +57 -50
  44. package/dist/esm/src/utils/DefaultProviderInstaller.d.ts +11 -0
  45. package/dist/esm/src/utils/DefaultProviderInstaller.js +129 -0
  46. package/dist/esm/src/utils/LogData.js +5 -1
  47. package/dist/esm/src/utils/commandLineUtils.js +12 -7
  48. package/dist/esm/src/utils/pathTemplateParser.js +7 -2
  49. package/dist/esm/src/utils/utils.js +30 -17
  50. package/dist/esm/start.js +7 -2
  51. package/index.ts +3 -0
  52. package/package.json +10 -4
  53. package/src/instanceManager.ts +1 -1
  54. package/src/socketManager.ts +6 -0
  55. package/src/utils/DefaultProviderInstaller.ts +141 -0
  56. package/tsconfig.json +3 -2
@@ -1,36 +1,39 @@
1
- import { storageService } from './storageService';
2
- import { assetManager } from './assetManager';
3
- import { parseKapetaUri } from '@kapeta/nodejs-utils';
4
- import { normalizeKapetaUri } from './utils/utils';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.configManager = void 0;
4
+ const storageService_1 = require("./storageService");
5
+ const assetManager_1 = require("./assetManager");
6
+ const nodejs_utils_1 = require("@kapeta/nodejs-utils");
7
+ const utils_1 = require("./utils/utils");
5
8
  class ConfigManager {
6
9
  _config;
7
10
  constructor() {
8
- this._config = storageService.section('config');
11
+ this._config = storageService_1.storageService.section('config');
9
12
  }
10
13
  _forSystem(systemId) {
11
- systemId = normalizeKapetaUri(systemId);
14
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
12
15
  if (!this._config[systemId]) {
13
16
  this._config[systemId] = {};
14
17
  }
15
18
  return this._config[systemId];
16
19
  }
17
20
  setConfigForSystem(systemId, config) {
18
- systemId = normalizeKapetaUri(systemId);
21
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
19
22
  const systemConfig = config || {};
20
- storageService.put('config', systemId, systemConfig);
23
+ storageService_1.storageService.put('config', systemId, systemConfig);
21
24
  }
22
25
  getConfigForSystem(systemId) {
23
- systemId = normalizeKapetaUri(systemId);
26
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
24
27
  return this._forSystem(systemId);
25
28
  }
26
29
  setConfigForSection(systemId, sectionId, config) {
27
- systemId = normalizeKapetaUri(systemId);
30
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
28
31
  let systemConfig = this._forSystem(systemId);
29
32
  systemConfig[sectionId] = config || {};
30
- storageService.put('config', systemId, systemConfig);
33
+ storageService_1.storageService.put('config', systemId, systemConfig);
31
34
  }
32
35
  getConfigForSection(systemId, sectionId) {
33
- systemId = normalizeKapetaUri(systemId);
36
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
34
37
  const systemConfig = this._forSystem(systemId);
35
38
  if (!systemConfig[sectionId]) {
36
39
  systemConfig[sectionId] = {};
@@ -54,12 +57,12 @@ class ConfigManager {
54
57
  * @returns {Promise<{systemId:string,instanceId:string}>}
55
58
  */
56
59
  async resolveIdentity(blockRef, systemId) {
57
- blockRef = normalizeKapetaUri(blockRef);
60
+ blockRef = (0, utils_1.normalizeKapetaUri)(blockRef);
58
61
  if (systemId) {
59
- systemId = normalizeKapetaUri(systemId);
62
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
60
63
  }
61
- const planAssets = assetManager.getPlans();
62
- const blockUri = parseKapetaUri(blockRef);
64
+ const planAssets = assetManager_1.assetManager.getPlans();
65
+ const blockUri = (0, nodejs_utils_1.parseKapetaUri)(blockRef);
63
66
  let matchingIdentities = [];
64
67
  planAssets.forEach((planAsset) => {
65
68
  if (systemId && planAsset.ref !== systemId) {
@@ -70,10 +73,10 @@ class ConfigManager {
70
73
  return;
71
74
  }
72
75
  planAsset.data.spec.blocks.forEach((blockInstance) => {
73
- const refUri = parseKapetaUri(blockInstance.block.ref);
76
+ const refUri = (0, nodejs_utils_1.parseKapetaUri)(blockInstance.block.ref);
74
77
  if (refUri.equals(blockUri)) {
75
78
  matchingIdentities.push({
76
- systemId: normalizeKapetaUri(planAsset.ref),
79
+ systemId: (0, utils_1.normalizeKapetaUri)(planAsset.ref),
77
80
  instanceId: blockInstance.id,
78
81
  });
79
82
  }
@@ -94,19 +97,19 @@ class ConfigManager {
94
97
  return matchingIdentities[0];
95
98
  }
96
99
  async verifyIdentity(blockRef, systemId, instanceId) {
97
- blockRef = normalizeKapetaUri(blockRef);
98
- systemId = normalizeKapetaUri(systemId);
99
- const planAssets = assetManager.getPlans();
100
- const systemUri = systemId ? parseKapetaUri(systemId) : null;
101
- const blockUri = parseKapetaUri(blockRef);
100
+ blockRef = (0, utils_1.normalizeKapetaUri)(blockRef);
101
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
102
+ const planAssets = assetManager_1.assetManager.getPlans();
103
+ const systemUri = systemId ? (0, nodejs_utils_1.parseKapetaUri)(systemId) : null;
104
+ const blockUri = (0, nodejs_utils_1.parseKapetaUri)(blockRef);
102
105
  let found = false;
103
106
  planAssets.forEach((planAsset) => {
104
- if (systemUri && !parseKapetaUri(planAsset.ref).equals(systemUri)) {
107
+ if (systemUri && !(0, nodejs_utils_1.parseKapetaUri)(planAsset.ref).equals(systemUri)) {
105
108
  //Skip plans that do not match systemid if provided
106
109
  return;
107
110
  }
108
111
  planAsset.data.spec.blocks.forEach((blockInstance) => {
109
- if (blockInstance.id === instanceId && parseKapetaUri(blockInstance.block.ref).equals(blockUri)) {
112
+ if (blockInstance.id === instanceId && (0, nodejs_utils_1.parseKapetaUri)(blockInstance.block.ref).equals(blockUri)) {
110
113
  found = true;
111
114
  }
112
115
  });
@@ -116,4 +119,4 @@ class ConfigManager {
116
119
  }
117
120
  }
118
121
  }
119
- export const configManager = new ConfigManager();
122
+ exports.configManager = new ConfigManager();
@@ -1,21 +1,27 @@
1
- import Path from 'path';
2
- import { storageService } from './storageService';
3
- import os from 'os';
4
- import _ from 'lodash';
5
- import FSExtra from 'fs-extra';
6
- import { Docker } from 'node-docker-api';
7
- import { parseKapetaUri } from '@kapeta/nodejs-utils';
8
- import ClusterConfiguration from '@kapeta/local-cluster-config';
9
- import uuid from 'node-uuid';
10
- import md5 from 'md5';
11
- import { getBlockInstanceContainerName } from './utils/utils';
12
- import { KapetaAPI } from '@kapeta/nodejs-api-client';
13
- import { taskManager } from './taskManager';
14
- export const CONTAINER_LABEL_PORT_PREFIX = 'kapeta_port-';
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.containerManager = exports.toLocalBindVolume = exports.getExtraHosts = exports.ContainerInfo = exports.HEALTH_CHECK_TIMEOUT = exports.CONTAINER_LABEL_PORT_PREFIX = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const storageService_1 = require("./storageService");
9
+ const os_1 = __importDefault(require("os"));
10
+ const lodash_1 = __importDefault(require("lodash"));
11
+ const fs_extra_1 = __importDefault(require("fs-extra"));
12
+ const node_docker_api_1 = require("node-docker-api");
13
+ const nodejs_utils_1 = require("@kapeta/nodejs-utils");
14
+ const local_cluster_config_1 = __importDefault(require("@kapeta/local-cluster-config"));
15
+ const node_uuid_1 = __importDefault(require("node-uuid"));
16
+ const md5_1 = __importDefault(require("md5"));
17
+ const utils_1 = require("./utils/utils");
18
+ const nodejs_api_client_1 = require("@kapeta/nodejs-api-client");
19
+ const taskManager_1 = require("./taskManager");
20
+ exports.CONTAINER_LABEL_PORT_PREFIX = 'kapeta_port-';
15
21
  const NANO_SECOND = 1000000;
16
22
  const HEALTH_CHECK_INTERVAL = 3000;
17
23
  const HEALTH_CHECK_MAX = 20;
18
- export const HEALTH_CHECK_TIMEOUT = HEALTH_CHECK_INTERVAL * HEALTH_CHECK_MAX * 2;
24
+ exports.HEALTH_CHECK_TIMEOUT = HEALTH_CHECK_INTERVAL * HEALTH_CHECK_MAX * 2;
19
25
  const promisifyStream = (stream, handler) => new Promise((resolve, reject) => {
20
26
  stream.on('data', handler);
21
27
  stream.on('end', resolve);
@@ -31,12 +37,12 @@ class ContainerManager {
31
37
  this._docker = null;
32
38
  this._alive = false;
33
39
  this._version = '';
34
- this._mountDir = Path.join(storageService.getKapetaBasedir(), 'mounts');
35
- FSExtra.mkdirpSync(this._mountDir);
40
+ this._mountDir = path_1.default.join(storageService_1.storageService.getKapetaBasedir(), 'mounts');
41
+ fs_extra_1.default.mkdirpSync(this._mountDir);
36
42
  }
37
43
  async initialize() {
38
44
  // Use the value from cluster-service.yml if configured
39
- const dockerConfig = ClusterConfiguration.getDockerConfig();
45
+ const dockerConfig = local_cluster_config_1.default.getDockerConfig();
40
46
  const connectOptions = Object.keys(dockerConfig).length > 0
41
47
  ? [dockerConfig]
42
48
  : [
@@ -46,7 +52,7 @@ class ContainerManager {
46
52
  { socketPath: '/var/run/docker.sock' },
47
53
  // default macOS
48
54
  {
49
- socketPath: Path.join(os.homedir(), '.docker/run/docker.sock'),
55
+ socketPath: path_1.default.join(os_1.default.homedir(), '.docker/run/docker.sock'),
50
56
  },
51
57
  // Default http
52
58
  { protocol: 'http', host: 'localhost', port: 2375 },
@@ -56,7 +62,7 @@ class ContainerManager {
56
62
  ];
57
63
  for (const opts of connectOptions) {
58
64
  try {
59
- const client = new Docker({
65
+ const client = new node_docker_api_1.Docker({
60
66
  ...opts,
61
67
  timeout: 10000,
62
68
  });
@@ -101,9 +107,9 @@ class ContainerManager {
101
107
  return this._alive;
102
108
  }
103
109
  getMountPoint(systemId, ref, mountName) {
104
- const kindUri = parseKapetaUri(ref);
105
- const systemUri = parseKapetaUri(systemId);
106
- return Path.join(this._mountDir, systemUri.handle, systemUri.name, systemUri.version, kindUri.handle, kindUri.name, kindUri.version, mountName);
110
+ const kindUri = (0, nodejs_utils_1.parseKapetaUri)(ref);
111
+ const systemUri = (0, nodejs_utils_1.parseKapetaUri)(systemId);
112
+ return path_1.default.join(this._mountDir, systemUri.handle, systemUri.name, systemUri.version, kindUri.handle, kindUri.name, kindUri.version, mountName);
107
113
  }
108
114
  async createMounts(systemId, kind, mountOpts) {
109
115
  const mounts = {};
@@ -111,7 +117,7 @@ class ContainerManager {
111
117
  const mountOptList = Object.entries(mountOpts);
112
118
  for (const [mountName, containerPath] of mountOptList) {
113
119
  const hostPath = this.getMountPoint(systemId, kind, mountName);
114
- await FSExtra.mkdirp(hostPath);
120
+ await fs_extra_1.default.mkdirp(hostPath);
115
121
  mounts[containerPath] = hostPath;
116
122
  }
117
123
  }
@@ -167,7 +173,7 @@ class ContainerManager {
167
173
  const taskName = `Pulling image ${friendlyImageName}`;
168
174
  const processor = async (task) => {
169
175
  const timeStarted = Date.now();
170
- const api = new KapetaAPI();
176
+ const api = new nodejs_api_client_1.KapetaAPI();
171
177
  const accessToken = api.hasToken() ? await api.getAccessToken() : null;
172
178
  const auth = accessToken && image.startsWith('docker.kapeta.com/')
173
179
  ? {
@@ -287,7 +293,7 @@ class ContainerManager {
287
293
  };
288
294
  task.emitUpdate();
289
295
  };
290
- const task = taskManager.add(`docker:image:pull:${image}`, processor, {
296
+ const task = taskManager_1.taskManager.add(`docker:image:pull:${image}`, processor, {
291
297
  name: taskName,
292
298
  image,
293
299
  progress: -1,
@@ -297,7 +303,7 @@ class ContainerManager {
297
303
  }
298
304
  toDockerMounts(mounts) {
299
305
  const Mounts = [];
300
- _.forEach(mounts, (Source, Target) => {
306
+ lodash_1.default.forEach(mounts, (Source, Target) => {
301
307
  Mounts.push({
302
308
  Target,
303
309
  Source: toLocalBindVolume(Source),
@@ -320,7 +326,7 @@ class ContainerManager {
320
326
  if (dockerOpts?.Labels?.HASH) {
321
327
  delete dockerOpts.Labels.HASH;
322
328
  }
323
- const hash = md5(JSON.stringify(dockerOpts));
329
+ const hash = (0, md5_1.default)(JSON.stringify(dockerOpts));
324
330
  if (!dockerOpts.Labels) {
325
331
  dockerOpts.Labels = {};
326
332
  }
@@ -425,7 +431,7 @@ class ContainerManager {
425
431
  }
426
432
  }
427
433
  async remove(container, opts) {
428
- const newName = 'deleting-' + uuid.v4();
434
+ const newName = 'deleting-' + node_uuid_1.default.v4();
429
435
  const containerData = container.data;
430
436
  // Rename the container first to avoid name conflicts if people start the same container
431
437
  await container.rename({ name: newName });
@@ -452,7 +458,7 @@ class ContainerManager {
452
458
  return new ContainerInfo(dockerContainer);
453
459
  }
454
460
  async getLogs(instance) {
455
- const containerName = getBlockInstanceContainerName(instance.systemId, instance.instanceId);
461
+ const containerName = (0, utils_1.getBlockInstanceContainerName)(instance.systemId, instance.instanceId);
456
462
  const containerInfo = await this.getContainerByName(containerName);
457
463
  if (!containerInfo) {
458
464
  return [
@@ -467,7 +473,7 @@ class ContainerManager {
467
473
  return containerInfo.getLogs();
468
474
  }
469
475
  }
470
- export class ContainerInfo {
476
+ class ContainerInfo {
471
477
  _container;
472
478
  /**
473
479
  *
@@ -501,7 +507,7 @@ export class ContainerInfo {
501
507
  await this._container.stop();
502
508
  }
503
509
  async remove(opts) {
504
- await containerManager.remove(this._container, opts);
510
+ await exports.containerManager.remove(this._container, opts);
505
511
  }
506
512
  async getPort(type) {
507
513
  const ports = await this.getPorts();
@@ -530,14 +536,14 @@ export class ContainerInfo {
530
536
  }
531
537
  const portTypes = {};
532
538
  const ports = {};
533
- _.forEach(inspectResult.Config.Labels, (portType, name) => {
534
- if (!name.startsWith(CONTAINER_LABEL_PORT_PREFIX)) {
539
+ lodash_1.default.forEach(inspectResult.Config.Labels, (portType, name) => {
540
+ if (!name.startsWith(exports.CONTAINER_LABEL_PORT_PREFIX)) {
535
541
  return;
536
542
  }
537
- const hostPort = name.substr(CONTAINER_LABEL_PORT_PREFIX.length);
543
+ const hostPort = name.substr(exports.CONTAINER_LABEL_PORT_PREFIX.length);
538
544
  portTypes[hostPort] = portType;
539
545
  });
540
- _.forEach(inspectResult.HostConfig.PortBindings, (portBindings, containerPortSpec) => {
546
+ lodash_1.default.forEach(inspectResult.HostConfig.PortBindings, (portBindings, containerPortSpec) => {
541
547
  let [containerPort, protocol] = containerPortSpec.split(/\//);
542
548
  const hostPort = portBindings[0].HostPort;
543
549
  const portType = portTypes[hostPort];
@@ -606,7 +612,8 @@ export class ContainerInfo {
606
612
  return out;
607
613
  }
608
614
  }
609
- export function getExtraHosts(dockerVersion) {
615
+ exports.ContainerInfo = ContainerInfo;
616
+ function getExtraHosts(dockerVersion) {
610
617
  if (process.platform !== 'darwin' && process.platform !== 'win32') {
611
618
  const [major, minor] = dockerVersion.split('.');
612
619
  if (parseInt(major) >= 20 && parseInt(minor) >= 10) {
@@ -619,6 +626,7 @@ export function getExtraHosts(dockerVersion) {
619
626
  }
620
627
  return undefined;
621
628
  }
629
+ exports.getExtraHosts = getExtraHosts;
622
630
  /**
623
631
  * Ensure that the volume is in the correct format for the docker daemon on the host
624
632
  *
@@ -626,7 +634,7 @@ export function getExtraHosts(dockerVersion) {
626
634
  * Linux: /path/to/volume -> /path/to/volume
627
635
  * Mac: /path/to/volume -> /path/to/volume
628
636
  */
629
- export function toLocalBindVolume(volume) {
637
+ function toLocalBindVolume(volume) {
630
638
  if (process.platform === 'win32') {
631
639
  //On Windows we need to convert c:\ to /c/
632
640
  return volume
@@ -637,4 +645,5 @@ export function toLocalBindVolume(volume) {
637
645
  }
638
646
  return volume;
639
647
  }
640
- export const containerManager = new ContainerManager();
648
+ exports.toLocalBindVolume = toLocalBindVolume;
649
+ exports.containerManager = new ContainerManager();
@@ -1,6 +1,12 @@
1
- import ClusterConfiguration from '@kapeta/local-cluster-config';
2
- import { parseKapetaUri } from '@kapeta/nodejs-utils';
3
- import { cacheManager, doCached } 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.definitionsManager = void 0;
7
+ const local_cluster_config_1 = __importDefault(require("@kapeta/local-cluster-config"));
8
+ const nodejs_utils_1 = require("@kapeta/nodejs-utils");
9
+ const cacheManager_1 = require("./cacheManager");
4
10
  class DefinitionsManager {
5
11
  getHash(kindFilter) {
6
12
  if (kindFilter) {
@@ -16,25 +22,25 @@ class DefinitionsManager {
16
22
  }
17
23
  getDefinitions(kindFilter) {
18
24
  const key = this.getFullKey(kindFilter);
19
- return doCached(key, () => ClusterConfiguration.getDefinitions(kindFilter));
25
+ return (0, cacheManager_1.doCached)(key, () => local_cluster_config_1.default.getDefinitions(kindFilter));
20
26
  }
21
27
  exists(ref) {
22
28
  return !!this.getDefinition(ref);
23
29
  }
24
30
  getProviderDefinitions() {
25
- return doCached('providers', () => ClusterConfiguration.getProviderDefinitions());
31
+ return (0, cacheManager_1.doCached)('providers', () => local_cluster_config_1.default.getProviderDefinitions());
26
32
  }
27
33
  getDefinition(ref) {
28
- const uri = parseKapetaUri(ref);
34
+ const uri = (0, nodejs_utils_1.parseKapetaUri)(ref);
29
35
  return this.getDefinitions().find((d) => {
30
36
  if (!uri.version) {
31
37
  return d.definition.metadata.name === uri.fullName;
32
38
  }
33
- return parseKapetaUri(`${d.definition.metadata.name}:${d.version}`).id === uri.id;
39
+ return (0, nodejs_utils_1.parseKapetaUri)(`${d.definition.metadata.name}:${d.version}`).id === uri.id;
34
40
  });
35
41
  }
36
42
  clearCache() {
37
- cacheManager.removePrefix('definitionsManager:');
43
+ cacheManager_1.cacheManager.removePrefix('definitionsManager:');
38
44
  }
39
45
  }
40
- export const definitionsManager = new DefinitionsManager();
46
+ exports.definitionsManager = new DefinitionsManager();
@@ -1,18 +1,23 @@
1
- import Router from 'express-promise-router';
2
- import { stringBody } from '../middleware/stringBody';
3
- import { filesystemManager } from '../filesystemManager';
4
- import { corsHandler } from '../middleware/cors';
5
- let router = Router();
6
- 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 stringBody_1 = require("../middleware/stringBody");
8
+ const filesystemManager_1 = require("../filesystemManager");
9
+ const cors_1 = require("../middleware/cors");
10
+ let router = (0, express_promise_router_1.default)();
11
+ router.use('/', cors_1.corsHandler);
7
12
  router.get('/root', (req, res) => {
8
- res.send(filesystemManager.getRootFolder());
13
+ res.send(filesystemManager_1.filesystemManager.getRootFolder());
9
14
  });
10
15
  router.get('/project/root', (req, res) => {
11
- res.send(filesystemManager.getProjectRootFolder());
16
+ res.send(filesystemManager_1.filesystemManager.getProjectRootFolder());
12
17
  });
13
- router.use('/project/root', stringBody);
18
+ router.use('/project/root', stringBody_1.stringBody);
14
19
  router.post('/project/root', (req, res) => {
15
- filesystemManager.setProjectRootFolder(req.stringBody ?? '');
20
+ filesystemManager_1.filesystemManager.setProjectRootFolder(req.stringBody ?? '');
16
21
  res.sendStatus(204);
17
22
  });
18
23
  router.use('/', (req, res, next) => {
@@ -25,7 +30,7 @@ router.use('/', (req, res, next) => {
25
30
  router.get('/list', async (req, res) => {
26
31
  let pathArg = req.query.path;
27
32
  try {
28
- res.send(await filesystemManager.readDirectory(pathArg));
33
+ res.send(await filesystemManager_1.filesystemManager.readDirectory(pathArg));
29
34
  }
30
35
  catch (err) {
31
36
  res.status(400).send({ error: '' + err });
@@ -34,7 +39,7 @@ router.get('/list', async (req, res) => {
34
39
  router.get('/readfile', async (req, res) => {
35
40
  let pathArg = req.query.path;
36
41
  try {
37
- res.send(await filesystemManager.readFile(pathArg));
42
+ res.send(await filesystemManager_1.filesystemManager.readFile(pathArg));
38
43
  }
39
44
  catch (err) {
40
45
  res.status(400).send({ error: '' + err });
@@ -43,22 +48,22 @@ router.get('/readfile', async (req, res) => {
43
48
  router.put('/mkdir', async (req, res) => {
44
49
  let pathArg = req.query.path;
45
50
  try {
46
- await filesystemManager.createFolder(pathArg);
51
+ await filesystemManager_1.filesystemManager.createFolder(pathArg);
47
52
  res.sendStatus(204);
48
53
  }
49
54
  catch (err) {
50
55
  res.status(400).send({ error: '' + err });
51
56
  }
52
57
  });
53
- router.use('/writefile', stringBody);
58
+ router.use('/writefile', stringBody_1.stringBody);
54
59
  router.post('/writefile', async (req, res) => {
55
60
  let pathArg = req.query.path;
56
61
  try {
57
- await filesystemManager.writeFile(pathArg, req.stringBody ?? '');
62
+ await filesystemManager_1.filesystemManager.writeFile(pathArg, req.stringBody ?? '');
58
63
  res.sendStatus(204);
59
64
  }
60
65
  catch (err) {
61
66
  res.status(400).send({ error: '' + err });
62
67
  }
63
68
  });
64
- export default router;
69
+ exports.default = router;
@@ -1,12 +1,18 @@
1
- import Path from 'path';
2
- import FS from 'fs';
3
- import FSExtra from 'fs-extra';
4
- import { storageService } from './storageService';
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.filesystemManager = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const fs_extra_1 = __importDefault(require("fs-extra"));
10
+ const storageService_1 = require("./storageService");
5
11
  const SECTION_ID = 'filesystem';
6
12
  const PROJECT_ROOT = 'project_root';
7
13
  function isFile(path) {
8
14
  try {
9
- return FS.statSync(path).isFile();
15
+ return fs_1.default.statSync(path).isFile();
10
16
  }
11
17
  catch (error) {
12
18
  return false;
@@ -14,15 +20,15 @@ function isFile(path) {
14
20
  }
15
21
  class FilesystemManager {
16
22
  async writeFile(path, data) {
17
- const dirName = Path.dirname(path);
18
- if (!FS.existsSync(dirName)) {
19
- FSExtra.mkdirpSync(dirName, {});
23
+ const dirName = path_1.default.dirname(path);
24
+ if (!fs_1.default.existsSync(dirName)) {
25
+ fs_extra_1.default.mkdirpSync(dirName, {});
20
26
  }
21
- FS.writeFileSync(path, data);
27
+ fs_1.default.writeFileSync(path, data);
22
28
  }
23
29
  async createFolder(path) {
24
30
  return new Promise((resolve, reject) => {
25
- FS.mkdir(path, (err) => {
31
+ fs_1.default.mkdir(path, (err) => {
26
32
  if (err) {
27
33
  err.message += '. You can only create one single folder at a time.';
28
34
  reject(err.message);
@@ -35,15 +41,15 @@ class FilesystemManager {
35
41
  async readDirectory(path) {
36
42
  return new Promise((resolve, reject) => {
37
43
  let response = [];
38
- FS.readdir(path, (err, files) => {
44
+ fs_1.default.readdir(path, (err, files) => {
39
45
  if (err) {
40
46
  reject(new Error(err));
41
47
  return;
42
48
  }
43
49
  files.forEach((file) => {
44
50
  response.push({
45
- path: Path.join(path, file),
46
- folder: FS.lstatSync(Path.join(path, file)).isDirectory(),
51
+ path: path_1.default.join(path, file),
52
+ folder: fs_1.default.lstatSync(path_1.default.join(path, file)).isDirectory(),
47
53
  });
48
54
  });
49
55
  resolve(response);
@@ -56,7 +62,7 @@ class FilesystemManager {
56
62
  reject(new Error('The path provided is invalid.Please check that the path and file name that were provided are spelled correctly. '));
57
63
  }
58
64
  else {
59
- FS.readFile(path, (err, data) => {
65
+ fs_1.default.readFile(path, (err, data) => {
60
66
  if (err) {
61
67
  reject(new Error(err.message));
62
68
  return;
@@ -70,10 +76,10 @@ class FilesystemManager {
70
76
  return require('os').homedir();
71
77
  }
72
78
  getProjectRootFolder() {
73
- return storageService.get(SECTION_ID, PROJECT_ROOT);
79
+ return storageService_1.storageService.get(SECTION_ID, PROJECT_ROOT);
74
80
  }
75
81
  setProjectRootFolder(folder) {
76
- storageService.put(SECTION_ID, PROJECT_ROOT, folder);
82
+ storageService_1.storageService.put(SECTION_ID, PROJECT_ROOT, folder);
77
83
  }
78
84
  }
79
- export const filesystemManager = new FilesystemManager();
85
+ exports.filesystemManager = new FilesystemManager();
@@ -1,11 +1,16 @@
1
- import Router from 'express-promise-router';
2
- import { KapetaAPI } from '@kapeta/nodejs-api-client';
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 nodejs_api_client_1 = require("@kapeta/nodejs-api-client");
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('/current', async (req, res) => {
7
12
  try {
8
- const api = new KapetaAPI();
13
+ const api = new nodejs_api_client_1.KapetaAPI();
9
14
  if (api.hasToken()) {
10
15
  res.send(await api.getCurrentIdentity());
11
16
  }
@@ -19,7 +24,7 @@ router.get('/current', async (req, res) => {
19
24
  });
20
25
  router.get('/:identityId/memberships', async (req, res) => {
21
26
  try {
22
- const api = new KapetaAPI();
27
+ const api = new nodejs_api_client_1.KapetaAPI();
23
28
  if (api.hasToken()) {
24
29
  res.send(await api.getMemberships(req.params.identityId));
25
30
  }
@@ -31,4 +36,4 @@ router.get('/:identityId/memberships', async (req, res) => {
31
36
  res.status(e.status ?? 500).send(e);
32
37
  }
33
38
  });
34
- export default router;
39
+ exports.default = router;