@kapeta/local-cluster-service 0.23.0 → 0.24.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # [0.24.0](https://github.com/kapetacom/local-cluster-service/compare/v0.23.0...v0.24.0) (2023-10-27)
2
+
3
+
4
+ ### Features
5
+
6
+ * Add endpoint for getting all installed versions for asset ([#90](https://github.com/kapetacom/local-cluster-service/issues/90)) ([fc593ba](https://github.com/kapetacom/local-cluster-service/commit/fc593babec99a7a67d6b6855c93546eb6cadd461))
7
+
1
8
  # [0.23.0](https://github.com/kapetacom/local-cluster-service/compare/v0.22.2...v0.23.0) (2023-10-24)
2
9
 
3
10
 
@@ -8,6 +8,7 @@ const yaml_1 = __importDefault(require("yaml"));
8
8
  const assetManager_1 = require("../assetManager");
9
9
  const cors_1 = require("../middleware/cors");
10
10
  const stringBody_1 = require("../middleware/stringBody");
11
+ const definitionsManager_1 = require("../definitionsManager");
11
12
  function parseBody(req) {
12
13
  switch (req.headers['content-type']) {
13
14
  case 'application/json':
@@ -53,6 +54,28 @@ router.get('/read', async (req, res) => {
53
54
  res.status(400).send({ error: err.message });
54
55
  }
55
56
  });
57
+ /**
58
+ * Get all versions for asset name
59
+ */
60
+ router.get('/versions', async (req, res) => {
61
+ if (!req.query.ref) {
62
+ res.status(400).send({ error: 'Query parameter "ref" is missing' });
63
+ return;
64
+ }
65
+ const ensure = req.query.ensure !== 'false';
66
+ try {
67
+ const versions = await definitionsManager_1.definitionsManager.getVersions(req.query.ref);
68
+ if (versions) {
69
+ res.send(versions);
70
+ }
71
+ else {
72
+ res.status(404).send({ error: 'Asset not found' });
73
+ }
74
+ }
75
+ catch (err) {
76
+ res.status(400).send({ error: err.message });
77
+ }
78
+ });
56
79
  /**
57
80
  * Creates a new local file and registers it as an asset
58
81
  */
@@ -7,6 +7,7 @@ declare class DefinitionsManager {
7
7
  exists(ref: string): Promise<boolean>;
8
8
  getProviderDefinitions(): Promise<DefinitionInfo[]>;
9
9
  getDefinition(ref: string): Promise<DefinitionInfo | undefined>;
10
+ getVersions(assetName: string): Promise<DefinitionInfo[]>;
10
11
  clearCache(): void;
11
12
  }
12
13
  export declare const definitionsManager: DefinitionsManager;
@@ -132,6 +132,13 @@ class DefinitionsManager {
132
132
  return (0, nodejs_utils_1.parseKapetaUri)(`${d.definition.metadata.name}:${d.version}`).id === uri.id;
133
133
  });
134
134
  }
135
+ async getVersions(assetName) {
136
+ const uri = (0, nodejs_utils_1.parseKapetaUri)(assetName);
137
+ const definitions = await this.getDefinitions();
138
+ return definitions.filter((d) => {
139
+ return d.definition.metadata.name === uri.fullName;
140
+ });
141
+ }
135
142
  clearCache() {
136
143
  cacheManager_1.cacheManager.removePrefix('definitionsManager:');
137
144
  }
@@ -8,6 +8,7 @@ const yaml_1 = __importDefault(require("yaml"));
8
8
  const assetManager_1 = require("../assetManager");
9
9
  const cors_1 = require("../middleware/cors");
10
10
  const stringBody_1 = require("../middleware/stringBody");
11
+ const definitionsManager_1 = require("../definitionsManager");
11
12
  function parseBody(req) {
12
13
  switch (req.headers['content-type']) {
13
14
  case 'application/json':
@@ -53,6 +54,28 @@ router.get('/read', async (req, res) => {
53
54
  res.status(400).send({ error: err.message });
54
55
  }
55
56
  });
57
+ /**
58
+ * Get all versions for asset name
59
+ */
60
+ router.get('/versions', async (req, res) => {
61
+ if (!req.query.ref) {
62
+ res.status(400).send({ error: 'Query parameter "ref" is missing' });
63
+ return;
64
+ }
65
+ const ensure = req.query.ensure !== 'false';
66
+ try {
67
+ const versions = await definitionsManager_1.definitionsManager.getVersions(req.query.ref);
68
+ if (versions) {
69
+ res.send(versions);
70
+ }
71
+ else {
72
+ res.status(404).send({ error: 'Asset not found' });
73
+ }
74
+ }
75
+ catch (err) {
76
+ res.status(400).send({ error: err.message });
77
+ }
78
+ });
56
79
  /**
57
80
  * Creates a new local file and registers it as an asset
58
81
  */
@@ -7,6 +7,7 @@ declare class DefinitionsManager {
7
7
  exists(ref: string): Promise<boolean>;
8
8
  getProviderDefinitions(): Promise<DefinitionInfo[]>;
9
9
  getDefinition(ref: string): Promise<DefinitionInfo | undefined>;
10
+ getVersions(assetName: string): Promise<DefinitionInfo[]>;
10
11
  clearCache(): void;
11
12
  }
12
13
  export declare const definitionsManager: DefinitionsManager;
@@ -132,6 +132,13 @@ class DefinitionsManager {
132
132
  return (0, nodejs_utils_1.parseKapetaUri)(`${d.definition.metadata.name}:${d.version}`).id === uri.id;
133
133
  });
134
134
  }
135
+ async getVersions(assetName) {
136
+ const uri = (0, nodejs_utils_1.parseKapetaUri)(assetName);
137
+ const definitions = await this.getDefinitions();
138
+ return definitions.filter((d) => {
139
+ return d.definition.metadata.name === uri.fullName;
140
+ });
141
+ }
135
142
  clearCache() {
136
143
  cacheManager_1.cacheManager.removePrefix('definitionsManager:');
137
144
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kapeta/local-cluster-service",
3
- "version": "0.23.0",
3
+ "version": "0.24.0",
4
4
  "description": "Manages configuration, ports and service discovery for locally running Kapeta systems",
5
5
  "type": "commonjs",
6
6
  "exports": {
@@ -6,6 +6,7 @@ import { assetManager } from '../assetManager';
6
6
  import { corsHandler } from '../middleware/cors';
7
7
 
8
8
  import { stringBody, StringBodyRequest } from '../middleware/stringBody';
9
+ import { definitionsManager } from '../definitionsManager';
9
10
 
10
11
  function parseBody(req: StringBodyRequest) {
11
12
  switch (req.headers['content-type']) {
@@ -58,6 +59,29 @@ router.get('/read', async (req: Request, res: Response) => {
58
59
  }
59
60
  });
60
61
 
62
+ /**
63
+ * Get all versions for asset name
64
+ */
65
+ router.get('/versions', async (req: Request, res: Response) => {
66
+ if (!req.query.ref) {
67
+ res.status(400).send({ error: 'Query parameter "ref" is missing' });
68
+ return;
69
+ }
70
+
71
+ const ensure = req.query.ensure !== 'false';
72
+
73
+ try {
74
+ const versions = await definitionsManager.getVersions(req.query.ref as string);
75
+ if (versions) {
76
+ res.send(versions);
77
+ } else {
78
+ res.status(404).send({ error: 'Asset not found' });
79
+ }
80
+ } catch (err: any) {
81
+ res.status(400).send({ error: err.message });
82
+ }
83
+ });
84
+
61
85
  /**
62
86
  * Creates a new local file and registers it as an asset
63
87
  */
@@ -165,6 +165,14 @@ class DefinitionsManager {
165
165
  });
166
166
  }
167
167
 
168
+ public async getVersions(assetName: string) {
169
+ const uri = parseKapetaUri(assetName);
170
+ const definitions = await this.getDefinitions();
171
+ return definitions.filter((d) => {
172
+ return d.definition.metadata.name === uri.fullName;
173
+ });
174
+ }
175
+
168
176
  public clearCache() {
169
177
  cacheManager.removePrefix('definitionsManager:');
170
178
  }