@kapeta/local-cluster-service 0.22.2 → 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 +14 -0
- package/dist/cjs/src/assetManager.d.ts +1 -1
- package/dist/cjs/src/assetManager.js +3 -3
- package/dist/cjs/src/assets/routes.js +24 -1
- package/dist/cjs/src/definitionsManager.d.ts +1 -0
- package/dist/cjs/src/definitionsManager.js +7 -0
- package/dist/esm/src/assetManager.d.ts +1 -1
- package/dist/esm/src/assetManager.js +3 -3
- package/dist/esm/src/assets/routes.js +24 -1
- package/dist/esm/src/definitionsManager.d.ts +1 -0
- package/dist/esm/src/definitionsManager.js +7 -0
- package/package.json +1 -1
- package/src/assetManager.ts +3 -3
- package/src/assets/routes.ts +25 -1
- package/src/definitionsManager.ts +8 -0
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,17 @@
|
|
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
|
+
|
8
|
+
# [0.23.0](https://github.com/kapetacom/local-cluster-service/compare/v0.22.2...v0.23.0) (2023-10-24)
|
9
|
+
|
10
|
+
|
11
|
+
### Features
|
12
|
+
|
13
|
+
* Make it possible to wait for installation to complete from the UI ([#88](https://github.com/kapetacom/local-cluster-service/issues/88)) ([f34c807](https://github.com/kapetacom/local-cluster-service/commit/f34c807d260264e85d770dc1575d0458feae2bae))
|
14
|
+
|
1
15
|
## [0.22.2](https://github.com/kapetacom/local-cluster-service/compare/v0.22.1...v0.22.2) (2023-10-22)
|
2
16
|
|
3
17
|
|
@@ -26,7 +26,7 @@ declare class AssetManager {
|
|
26
26
|
updateAsset(ref: string, yaml: BlockDefinition, sourceOfChange?: SourceOfChange): Promise<void>;
|
27
27
|
importFile(filePath: string): Promise<EnrichedAsset[]>;
|
28
28
|
unregisterAsset(ref: string): Promise<void>;
|
29
|
-
installAsset(ref: string): Promise<import("./taskManager").Task<void>[] | undefined>;
|
29
|
+
installAsset(ref: string, wait?: boolean): Promise<import("./taskManager").Task<void>[] | undefined>;
|
30
30
|
private maybeGenerateCode;
|
31
31
|
}
|
32
32
|
export declare const assetManager: AssetManager;
|
@@ -175,17 +175,17 @@ class AssetManager {
|
|
175
175
|
definitionsManager_1.definitionsManager.clearCache();
|
176
176
|
await nodejs_registry_utils_1.Actions.uninstall(new progressListener_1.ProgressListener(), [asset.ref]);
|
177
177
|
}
|
178
|
-
async installAsset(ref) {
|
178
|
+
async installAsset(ref, wait = false) {
|
179
179
|
const asset = await this.getAsset(ref, true, false);
|
180
180
|
if (asset) {
|
181
181
|
throw new Error('Asset already installed: ' + ref);
|
182
182
|
}
|
183
183
|
const uri = (0, nodejs_utils_1.parseKapetaUri)(ref);
|
184
|
-
console.log('Installing %s', ref);
|
184
|
+
console.log('Installing %s (sync: %s)', ref, wait);
|
185
185
|
const key = toKey(ref);
|
186
186
|
cacheManager_1.cacheManager.remove(key);
|
187
187
|
definitionsManager_1.definitionsManager.clearCache();
|
188
|
-
return await repositoryManager_1.repositoryManager.ensureAsset(uri.handle, uri.name, uri.version,
|
188
|
+
return await repositoryManager_1.repositoryManager.ensureAsset(uri.handle, uri.name, uri.version, wait);
|
189
189
|
}
|
190
190
|
async maybeGenerateCode(ref, ymlPath, block) {
|
191
191
|
ref = (0, nodejs_utils_1.normalizeKapetaUri)(ref);
|
@@ -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
|
*/
|
@@ -127,7 +150,7 @@ router.put('/install', async (req, res) => {
|
|
127
150
|
return;
|
128
151
|
}
|
129
152
|
try {
|
130
|
-
const tasks = await assetManager_1.assetManager.installAsset(req.query.ref);
|
153
|
+
const tasks = await assetManager_1.assetManager.installAsset(req.query.ref, !!req.query.wait);
|
131
154
|
const taskIds = tasks?.map((t) => t.id) ?? [];
|
132
155
|
res.status(200).send(taskIds);
|
133
156
|
}
|
@@ -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
|
}
|
@@ -26,7 +26,7 @@ declare class AssetManager {
|
|
26
26
|
updateAsset(ref: string, yaml: BlockDefinition, sourceOfChange?: SourceOfChange): Promise<void>;
|
27
27
|
importFile(filePath: string): Promise<EnrichedAsset[]>;
|
28
28
|
unregisterAsset(ref: string): Promise<void>;
|
29
|
-
installAsset(ref: string): Promise<import("./taskManager").Task<void>[] | undefined>;
|
29
|
+
installAsset(ref: string, wait?: boolean): Promise<import("./taskManager").Task<void>[] | undefined>;
|
30
30
|
private maybeGenerateCode;
|
31
31
|
}
|
32
32
|
export declare const assetManager: AssetManager;
|
@@ -175,17 +175,17 @@ class AssetManager {
|
|
175
175
|
definitionsManager_1.definitionsManager.clearCache();
|
176
176
|
await nodejs_registry_utils_1.Actions.uninstall(new progressListener_1.ProgressListener(), [asset.ref]);
|
177
177
|
}
|
178
|
-
async installAsset(ref) {
|
178
|
+
async installAsset(ref, wait = false) {
|
179
179
|
const asset = await this.getAsset(ref, true, false);
|
180
180
|
if (asset) {
|
181
181
|
throw new Error('Asset already installed: ' + ref);
|
182
182
|
}
|
183
183
|
const uri = (0, nodejs_utils_1.parseKapetaUri)(ref);
|
184
|
-
console.log('Installing %s', ref);
|
184
|
+
console.log('Installing %s (sync: %s)', ref, wait);
|
185
185
|
const key = toKey(ref);
|
186
186
|
cacheManager_1.cacheManager.remove(key);
|
187
187
|
definitionsManager_1.definitionsManager.clearCache();
|
188
|
-
return await repositoryManager_1.repositoryManager.ensureAsset(uri.handle, uri.name, uri.version,
|
188
|
+
return await repositoryManager_1.repositoryManager.ensureAsset(uri.handle, uri.name, uri.version, wait);
|
189
189
|
}
|
190
190
|
async maybeGenerateCode(ref, ymlPath, block) {
|
191
191
|
ref = (0, nodejs_utils_1.normalizeKapetaUri)(ref);
|
@@ -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
|
*/
|
@@ -127,7 +150,7 @@ router.put('/install', async (req, res) => {
|
|
127
150
|
return;
|
128
151
|
}
|
129
152
|
try {
|
130
|
-
const tasks = await assetManager_1.assetManager.installAsset(req.query.ref);
|
153
|
+
const tasks = await assetManager_1.assetManager.installAsset(req.query.ref, !!req.query.wait);
|
131
154
|
const taskIds = tasks?.map((t) => t.id) ?? [];
|
132
155
|
res.status(200).send(taskIds);
|
133
156
|
}
|
@@ -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
package/src/assetManager.ts
CHANGED
@@ -239,18 +239,18 @@ class AssetManager {
|
|
239
239
|
await Actions.uninstall(new ProgressListener(), [asset.ref]);
|
240
240
|
}
|
241
241
|
|
242
|
-
async installAsset(ref: string) {
|
242
|
+
async installAsset(ref: string, wait: boolean = false) {
|
243
243
|
const asset = await this.getAsset(ref, true, false);
|
244
244
|
if (asset) {
|
245
245
|
throw new Error('Asset already installed: ' + ref);
|
246
246
|
}
|
247
247
|
const uri = parseKapetaUri(ref);
|
248
|
-
console.log('Installing %s', ref);
|
248
|
+
console.log('Installing %s (sync: %s)', ref, wait);
|
249
249
|
const key = toKey(ref);
|
250
250
|
cacheManager.remove(key);
|
251
251
|
definitionsManager.clearCache();
|
252
252
|
|
253
|
-
return await repositoryManager.ensureAsset(uri.handle, uri.name, uri.version,
|
253
|
+
return await repositoryManager.ensureAsset(uri.handle, uri.name, uri.version, wait);
|
254
254
|
}
|
255
255
|
|
256
256
|
private async maybeGenerateCode(ref: string, ymlPath: string, block: BlockDefinition) {
|
package/src/assets/routes.ts
CHANGED
@@ -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
|
*/
|
@@ -143,7 +167,7 @@ router.put('/install', async (req: Request, res: Response) => {
|
|
143
167
|
}
|
144
168
|
|
145
169
|
try {
|
146
|
-
const tasks = await assetManager.installAsset(req.query.ref as string);
|
170
|
+
const tasks = await assetManager.installAsset(req.query.ref as string, !!req.query.wait);
|
147
171
|
const taskIds = tasks?.map((t) => t.id) ?? [];
|
148
172
|
res.status(200).send(taskIds);
|
149
173
|
} catch (err: any) {
|
@@ -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
|
}
|