@kapeta/local-cluster-service 0.16.5 → 0.16.7

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [0.16.7](https://github.com/kapetacom/local-cluster-service/compare/v0.16.6...v0.16.7) (2023-08-24)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * Load JS from provider endpoints if not available locally ([#63](https://github.com/kapetacom/local-cluster-service/issues/63)) ([83c7cb4](https://github.com/kapetacom/local-cluster-service/commit/83c7cb4a176a2b23ee5bf5e8a312e8a64abd9ea6))
7
+
8
+ ## [0.16.6](https://github.com/kapetacom/local-cluster-service/compare/v0.16.5...v0.16.6) (2023-08-21)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * Add timeout when testing docker ([#62](https://github.com/kapetacom/local-cluster-service/issues/62)) ([c6e373e](https://github.com/kapetacom/local-cluster-service/commit/c6e373eab81f466b5a4fd8dbd9ca9f085f9b91de))
14
+
1
15
  ## [0.16.5](https://github.com/kapetacom/local-cluster-service/compare/v0.16.4...v0.16.5) (2023-08-14)
2
16
 
3
17
 
package/dist/cjs/index.js CHANGED
@@ -100,6 +100,7 @@ exports.default = {
100
100
  throw new Error('Server already started');
101
101
  }
102
102
  try {
103
+ console.log('Testing docker runtime...');
103
104
  await containerManager_1.containerManager.initialize();
104
105
  }
105
106
  catch (e) {
@@ -62,7 +62,10 @@ class ContainerManager {
62
62
  ];
63
63
  for (const opts of connectOptions) {
64
64
  try {
65
- const client = new node_docker_api_1.Docker(opts);
65
+ const client = new node_docker_api_1.Docker({
66
+ ...opts,
67
+ timeout: 10000,
68
+ });
66
69
  await client.ping();
67
70
  this._docker = client;
68
71
  const versionInfo = await client.version();
@@ -1,7 +1,6 @@
1
- /// <reference types="node" />
2
1
  declare class ProviderManager {
3
2
  getWebProviders(): import("@kapeta/local-cluster-config").DefinitionInfo[];
4
- getProviderWebJS(handle: string, name: string, version: string, sourceMap?: boolean): Promise<string | Buffer | null>;
3
+ getProviderWebJS(handle: string, name: string, version: string, sourceMap?: boolean): Promise<unknown>;
5
4
  }
6
5
  export declare const providerManager: ProviderManager;
7
6
  export {};
@@ -6,9 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.providerManager = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const fs_extra_1 = __importDefault(require("fs-extra"));
9
- const repositoryManager_1 = require("./repositoryManager");
10
9
  const definitionsManager_1 = require("./definitionsManager");
11
10
  const cacheManager_1 = require("./cacheManager");
11
+ const request_1 = __importDefault(require("request"));
12
+ const PROVIDER_FILE_BASE = 'https://providers.kapeta.com/files';
12
13
  class ProviderManager {
13
14
  getWebProviders() {
14
15
  return definitionsManager_1.definitionsManager.getProviderDefinitions().filter((providerDefinition) => providerDefinition.hasWeb);
@@ -18,10 +19,9 @@ class ProviderManager {
18
19
  const id = `${handle}/${name}/${version}/web.js${sourceMap ? '.map' : ''}`;
19
20
  const cacheKey = `provider:web:${id}`;
20
21
  const file = cacheManager_1.cacheManager.get(cacheKey);
21
- if (file && await fs_extra_1.default.pathExists(file)) {
22
+ if (file && (await fs_extra_1.default.pathExists(file))) {
22
23
  return fs_extra_1.default.readFile(file, 'utf8');
23
24
  }
24
- await repositoryManager_1.repositoryManager.ensureAsset(handle, name, version, true);
25
25
  const installedProvider = this.getWebProviders().find((providerDefinition) => {
26
26
  return providerDefinition.definition.metadata.name === fullName && providerDefinition.version === version;
27
27
  });
@@ -33,7 +33,28 @@ class ProviderManager {
33
33
  return fs_extra_1.default.readFile(path);
34
34
  }
35
35
  }
36
- return null;
36
+ if (version === 'local') {
37
+ return null;
38
+ }
39
+ const url = `${PROVIDER_FILE_BASE}/${id}`;
40
+ return new Promise((resolve, reject) => {
41
+ console.log('Loading provider from %s', url);
42
+ request_1.default.get(url, (error, response, body) => {
43
+ if (error) {
44
+ reject(error);
45
+ return;
46
+ }
47
+ if (response.statusCode === 404) {
48
+ resolve(null);
49
+ return;
50
+ }
51
+ if (response.statusCode !== 200) {
52
+ reject(new Error(`Failed to load provider from ${url}: ${body}`));
53
+ return;
54
+ }
55
+ resolve(body);
56
+ });
57
+ });
37
58
  }
38
59
  }
39
60
  const providerDefinitions = definitionsManager_1.definitionsManager.getProviderDefinitions();
@@ -43,6 +64,7 @@ if (providerDefinitions.length > 0) {
43
64
  console.log(' - %s[%s:%s]', providerDefinition.definition.kind, providerDefinition.definition.metadata.name, providerDefinition.version);
44
65
  console.log(' from %s', providerDefinition.path);
45
66
  });
67
+ console.log('##');
46
68
  }
47
69
  else {
48
70
  console.log('## No providers found ##');
package/dist/esm/index.js CHANGED
@@ -95,6 +95,7 @@ export default {
95
95
  throw new Error('Server already started');
96
96
  }
97
97
  try {
98
+ console.log('Testing docker runtime...');
98
99
  await containerManager.initialize();
99
100
  }
100
101
  catch (e) {
@@ -56,7 +56,10 @@ class ContainerManager {
56
56
  ];
57
57
  for (const opts of connectOptions) {
58
58
  try {
59
- const client = new Docker(opts);
59
+ const client = new Docker({
60
+ ...opts,
61
+ timeout: 10000,
62
+ });
60
63
  await client.ping();
61
64
  this._docker = client;
62
65
  const versionInfo = await client.version();
@@ -1,7 +1,6 @@
1
- /// <reference types="node" />
2
1
  declare class ProviderManager {
3
2
  getWebProviders(): import("@kapeta/local-cluster-config").DefinitionInfo[];
4
- getProviderWebJS(handle: string, name: string, version: string, sourceMap?: boolean): Promise<string | Buffer | null>;
3
+ getProviderWebJS(handle: string, name: string, version: string, sourceMap?: boolean): Promise<unknown>;
5
4
  }
6
5
  export declare const providerManager: ProviderManager;
7
6
  export {};
@@ -1,8 +1,9 @@
1
1
  import Path from 'path';
2
2
  import FSExtra from 'fs-extra';
3
- import { repositoryManager } from './repositoryManager';
4
3
  import { definitionsManager } from './definitionsManager';
5
- import { cacheManager } from "./cacheManager";
4
+ import { cacheManager } from './cacheManager';
5
+ import request from 'request';
6
+ const PROVIDER_FILE_BASE = 'https://providers.kapeta.com/files';
6
7
  class ProviderManager {
7
8
  getWebProviders() {
8
9
  return definitionsManager.getProviderDefinitions().filter((providerDefinition) => providerDefinition.hasWeb);
@@ -12,10 +13,9 @@ class ProviderManager {
12
13
  const id = `${handle}/${name}/${version}/web.js${sourceMap ? '.map' : ''}`;
13
14
  const cacheKey = `provider:web:${id}`;
14
15
  const file = cacheManager.get(cacheKey);
15
- if (file && await FSExtra.pathExists(file)) {
16
+ if (file && (await FSExtra.pathExists(file))) {
16
17
  return FSExtra.readFile(file, 'utf8');
17
18
  }
18
- await repositoryManager.ensureAsset(handle, name, version, true);
19
19
  const installedProvider = this.getWebProviders().find((providerDefinition) => {
20
20
  return providerDefinition.definition.metadata.name === fullName && providerDefinition.version === version;
21
21
  });
@@ -27,7 +27,28 @@ class ProviderManager {
27
27
  return FSExtra.readFile(path);
28
28
  }
29
29
  }
30
- return null;
30
+ if (version === 'local') {
31
+ return null;
32
+ }
33
+ const url = `${PROVIDER_FILE_BASE}/${id}`;
34
+ return new Promise((resolve, reject) => {
35
+ console.log('Loading provider from %s', url);
36
+ request.get(url, (error, response, body) => {
37
+ if (error) {
38
+ reject(error);
39
+ return;
40
+ }
41
+ if (response.statusCode === 404) {
42
+ resolve(null);
43
+ return;
44
+ }
45
+ if (response.statusCode !== 200) {
46
+ reject(new Error(`Failed to load provider from ${url}: ${body}`));
47
+ return;
48
+ }
49
+ resolve(body);
50
+ });
51
+ });
31
52
  }
32
53
  }
33
54
  const providerDefinitions = definitionsManager.getProviderDefinitions();
@@ -37,6 +58,7 @@ if (providerDefinitions.length > 0) {
37
58
  console.log(' - %s[%s:%s]', providerDefinition.definition.kind, providerDefinition.definition.metadata.name, providerDefinition.version);
38
59
  console.log(' from %s', providerDefinition.path);
39
60
  });
61
+ console.log('##');
40
62
  }
41
63
  else {
42
64
  console.log('## No providers found ##');
package/index.ts CHANGED
@@ -114,6 +114,7 @@ export default {
114
114
  }
115
115
 
116
116
  try {
117
+ console.log('Testing docker runtime...');
117
118
  await containerManager.initialize();
118
119
  } catch (e: any) {
119
120
  console.error(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kapeta/local-cluster-service",
3
- "version": "0.16.5",
3
+ "version": "0.16.7",
4
4
  "description": "Manages configuration, ports and service discovery for locally running Kapeta systems",
5
5
  "type": "commonjs",
6
6
  "exports": {
@@ -110,7 +110,10 @@ class ContainerManager {
110
110
  ];
111
111
  for (const opts of connectOptions) {
112
112
  try {
113
- const client = new Docker(opts);
113
+ const client = new Docker({
114
+ ...opts,
115
+ timeout: 10000,
116
+ });
114
117
  await client.ping();
115
118
  this._docker = client;
116
119
  const versionInfo: any = await client.version();
@@ -1,14 +1,12 @@
1
1
  import Path from 'path';
2
2
  import FSExtra from 'fs-extra';
3
- import { repositoryManager } from './repositoryManager';
4
- import ClusterConfiguration from '@kapeta/local-cluster-config';
5
- import { StringMap } from './types';
6
3
  import { definitionsManager } from './definitionsManager';
7
- import {cacheManager} from "./cacheManager";
8
-
9
- class ProviderManager {
4
+ import { cacheManager } from './cacheManager';
5
+ import request from 'request';
10
6
 
7
+ const PROVIDER_FILE_BASE = 'https://providers.kapeta.com/files';
11
8
 
9
+ class ProviderManager {
12
10
  getWebProviders() {
13
11
  return definitionsManager.getProviderDefinitions().filter((providerDefinition) => providerDefinition.hasWeb);
14
12
  }
@@ -20,12 +18,10 @@ class ProviderManager {
20
18
  const cacheKey = `provider:web:${id}`;
21
19
 
22
20
  const file = cacheManager.get<string>(cacheKey);
23
- if (file && await FSExtra.pathExists(file)) {
21
+ if (file && (await FSExtra.pathExists(file))) {
24
22
  return FSExtra.readFile(file, 'utf8');
25
23
  }
26
24
 
27
- await repositoryManager.ensureAsset(handle, name, version, true);
28
-
29
25
  const installedProvider = this.getWebProviders().find((providerDefinition) => {
30
26
  return providerDefinition.definition.metadata.name === fullName && providerDefinition.version === version;
31
27
  });
@@ -34,12 +30,36 @@ class ProviderManager {
34
30
  //Check locally installed providers
35
31
  const path = Path.join(installedProvider.path, 'web', handle, `${name}.js${sourceMap ? '.map' : ''}`);
36
32
  if (await FSExtra.pathExists(path)) {
37
- cacheManager.set(cacheKey, path, 24* 60 * 60 * 1000);
33
+ cacheManager.set(cacheKey, path, 24 * 60 * 60 * 1000);
38
34
  return FSExtra.readFile(path);
39
35
  }
40
36
  }
41
37
 
42
- return null;
38
+ if (version === 'local') {
39
+ return null;
40
+ }
41
+
42
+ const url = `${PROVIDER_FILE_BASE}/${id}`;
43
+ return new Promise((resolve, reject) => {
44
+ console.log('Loading provider from %s', url);
45
+ request.get(url, (error, response, body) => {
46
+ if (error) {
47
+ reject(error);
48
+ return;
49
+ }
50
+ if (response.statusCode === 404) {
51
+ resolve(null);
52
+ return;
53
+ }
54
+
55
+ if (response.statusCode !== 200) {
56
+ reject(new Error(`Failed to load provider from ${url}: ${body}`));
57
+ return;
58
+ }
59
+
60
+ resolve(body);
61
+ });
62
+ });
43
63
  }
44
64
  }
45
65
 
@@ -56,6 +76,7 @@ if (providerDefinitions.length > 0) {
56
76
  );
57
77
  console.log(' from %s', providerDefinition.path);
58
78
  });
79
+ console.log('##');
59
80
  } else {
60
81
  console.log('## No providers found ##');
61
82
  }