@kapeta/local-cluster-service 0.40.2 → 0.40.4

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.40.4](https://github.com/kapetacom/local-cluster-service/compare/v0.40.3...v0.40.4) (2024-04-04)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * Add assets/issues endpoint + bump cluster-config ([#134](https://github.com/kapetacom/local-cluster-service/issues/134)) ([121b510](https://github.com/kapetacom/local-cluster-service/commit/121b510c00525e5f65b88a9d5ccdc00ee642cff4))
7
+
8
+ ## [0.40.3](https://github.com/kapetacom/local-cluster-service/compare/v0.40.2...v0.40.3) (2024-03-26)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * codegen for 'core/block-type.*' regexp ([8e544b0](https://github.com/kapetacom/local-cluster-service/commit/8e544b0ca91acf0b467e60ee0249a5a96ece6393))
14
+
1
15
  ## [0.40.2](https://github.com/kapetacom/local-cluster-service/compare/v0.40.1...v0.40.2) (2024-03-11)
2
16
 
3
17
 
@@ -162,4 +162,13 @@ router.put('/install', async (req, res) => {
162
162
  res.status(400).send({ error: err.message });
163
163
  }
164
164
  });
165
+ router.get('/issues', async (req, res) => {
166
+ try {
167
+ const issues = await definitionsManager_1.definitionsManager.getDefinitionErrors();
168
+ res.send(issues);
169
+ }
170
+ catch (err) {
171
+ res.status(500).send({ error: err.message });
172
+ }
173
+ });
165
174
  exports.default = router;
@@ -15,7 +15,7 @@ const assetManager_1 = require("./assetManager");
15
15
  const nodejs_utils_1 = require("@kapeta/nodejs-utils");
16
16
  const repositoryManager_1 = require("./repositoryManager");
17
17
  const TARGET_KIND = 'core/language-target';
18
- const BLOCK_TYPE_KIND = 'core/block-type';
18
+ const BLOCK_TYPE_REGEX = /^core\/block-type.*/;
19
19
  class CodeGeneratorManager {
20
20
  async ensureLanguageTargetInRegistry(path, version, definition) {
21
21
  const key = `${definition.metadata.name}:${version}`;
@@ -63,7 +63,7 @@ class CodeGeneratorManager {
63
63
  return false;
64
64
  }
65
65
  const kindUri = (0, nodejs_utils_1.parseKapetaUri)(yamlContent.kind);
66
- const blockTypes = await definitionsManager_1.definitionsManager.getDefinitions(BLOCK_TYPE_KIND);
66
+ const blockTypes = await definitionsManager_1.definitionsManager.getDefinitions([BLOCK_TYPE_REGEX]);
67
67
  const blockTypeKinds = blockTypes.map((blockType) => (0, nodejs_utils_1.parseKapetaUri)(blockType.definition.metadata.name).fullName);
68
68
  return blockTypeKinds.includes(kindUri.fullName);
69
69
  }
@@ -8,9 +8,10 @@ declare class DefinitionsManager {
8
8
  private resolveDefinitionsAndSamples;
9
9
  private prepareSample;
10
10
  private applyFilters;
11
- getDefinitions(kindFilter?: string | string[]): Promise<DefinitionInfo[]>;
11
+ getDefinitions(kindFilter?: string | (string | RegExp)[]): Promise<DefinitionInfo[]>;
12
12
  exists(ref: string): Promise<boolean>;
13
13
  getProviderDefinitions(): Promise<DefinitionInfo[]>;
14
+ getDefinitionErrors(): Promise<import("@kapeta/local-cluster-config").DefinitionError[]>;
14
15
  getDefinition(ref: string): Promise<DefinitionInfo | undefined>;
15
16
  getLatestDefinition(name: string): Promise<DefinitionInfo | undefined>;
16
17
  getVersions(assetName: string): Promise<DefinitionInfo[]>;
@@ -38,7 +38,7 @@ function normalizeFilters(kindFilter) {
38
38
  resolvedFilters = [kindFilter];
39
39
  }
40
40
  }
41
- return resolvedFilters.map((k) => k.toLowerCase());
41
+ return resolvedFilters;
42
42
  }
43
43
  class DefinitionsManager {
44
44
  async resolveDefinitionsAndSamples() {
@@ -120,7 +120,15 @@ class DefinitionsManager {
120
120
  return definitions;
121
121
  }
122
122
  return definitions.filter((d) => {
123
- return kindFilter.includes(d.definition.kind.toLowerCase());
123
+ const kind = d.definition.kind.toLowerCase();
124
+ return kindFilter.some((filter) => {
125
+ if (filter instanceof RegExp) {
126
+ return filter.test(kind);
127
+ }
128
+ else {
129
+ return kind === filter.toLowerCase();
130
+ }
131
+ });
124
132
  });
125
133
  }
126
134
  async getDefinitions(kindFilter) {
@@ -134,6 +142,9 @@ class DefinitionsManager {
134
142
  async getProviderDefinitions() {
135
143
  return (0, cacheManager_1.doCached)('definitionsManager:providers', () => local_cluster_config_1.default.getProviderDefinitions());
136
144
  }
145
+ async getDefinitionErrors() {
146
+ return local_cluster_config_1.default.getDefinitionErrors();
147
+ }
137
148
  async getDefinition(ref) {
138
149
  const uri = (0, nodejs_utils_1.parseKapetaUri)(ref);
139
150
  const definitions = await this.getDefinitions();
@@ -162,4 +162,13 @@ router.put('/install', async (req, res) => {
162
162
  res.status(400).send({ error: err.message });
163
163
  }
164
164
  });
165
+ router.get('/issues', async (req, res) => {
166
+ try {
167
+ const issues = await definitionsManager_1.definitionsManager.getDefinitionErrors();
168
+ res.send(issues);
169
+ }
170
+ catch (err) {
171
+ res.status(500).send({ error: err.message });
172
+ }
173
+ });
165
174
  exports.default = router;
@@ -15,7 +15,7 @@ const assetManager_1 = require("./assetManager");
15
15
  const nodejs_utils_1 = require("@kapeta/nodejs-utils");
16
16
  const repositoryManager_1 = require("./repositoryManager");
17
17
  const TARGET_KIND = 'core/language-target';
18
- const BLOCK_TYPE_KIND = 'core/block-type';
18
+ const BLOCK_TYPE_REGEX = /^core\/block-type.*/;
19
19
  class CodeGeneratorManager {
20
20
  async ensureLanguageTargetInRegistry(path, version, definition) {
21
21
  const key = `${definition.metadata.name}:${version}`;
@@ -63,7 +63,7 @@ class CodeGeneratorManager {
63
63
  return false;
64
64
  }
65
65
  const kindUri = (0, nodejs_utils_1.parseKapetaUri)(yamlContent.kind);
66
- const blockTypes = await definitionsManager_1.definitionsManager.getDefinitions(BLOCK_TYPE_KIND);
66
+ const blockTypes = await definitionsManager_1.definitionsManager.getDefinitions([BLOCK_TYPE_REGEX]);
67
67
  const blockTypeKinds = blockTypes.map((blockType) => (0, nodejs_utils_1.parseKapetaUri)(blockType.definition.metadata.name).fullName);
68
68
  return blockTypeKinds.includes(kindUri.fullName);
69
69
  }
@@ -8,9 +8,10 @@ declare class DefinitionsManager {
8
8
  private resolveDefinitionsAndSamples;
9
9
  private prepareSample;
10
10
  private applyFilters;
11
- getDefinitions(kindFilter?: string | string[]): Promise<DefinitionInfo[]>;
11
+ getDefinitions(kindFilter?: string | (string | RegExp)[]): Promise<DefinitionInfo[]>;
12
12
  exists(ref: string): Promise<boolean>;
13
13
  getProviderDefinitions(): Promise<DefinitionInfo[]>;
14
+ getDefinitionErrors(): Promise<import("@kapeta/local-cluster-config").DefinitionError[]>;
14
15
  getDefinition(ref: string): Promise<DefinitionInfo | undefined>;
15
16
  getLatestDefinition(name: string): Promise<DefinitionInfo | undefined>;
16
17
  getVersions(assetName: string): Promise<DefinitionInfo[]>;
@@ -38,7 +38,7 @@ function normalizeFilters(kindFilter) {
38
38
  resolvedFilters = [kindFilter];
39
39
  }
40
40
  }
41
- return resolvedFilters.map((k) => k.toLowerCase());
41
+ return resolvedFilters;
42
42
  }
43
43
  class DefinitionsManager {
44
44
  async resolveDefinitionsAndSamples() {
@@ -120,7 +120,15 @@ class DefinitionsManager {
120
120
  return definitions;
121
121
  }
122
122
  return definitions.filter((d) => {
123
- return kindFilter.includes(d.definition.kind.toLowerCase());
123
+ const kind = d.definition.kind.toLowerCase();
124
+ return kindFilter.some((filter) => {
125
+ if (filter instanceof RegExp) {
126
+ return filter.test(kind);
127
+ }
128
+ else {
129
+ return kind === filter.toLowerCase();
130
+ }
131
+ });
124
132
  });
125
133
  }
126
134
  async getDefinitions(kindFilter) {
@@ -134,6 +142,9 @@ class DefinitionsManager {
134
142
  async getProviderDefinitions() {
135
143
  return (0, cacheManager_1.doCached)('definitionsManager:providers', () => local_cluster_config_1.default.getProviderDefinitions());
136
144
  }
145
+ async getDefinitionErrors() {
146
+ return local_cluster_config_1.default.getDefinitionErrors();
147
+ }
137
148
  async getDefinition(ref) {
138
149
  const uri = (0, nodejs_utils_1.parseKapetaUri)(ref);
139
150
  const definitions = await this.getDefinitions();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kapeta/local-cluster-service",
3
- "version": "0.40.2",
3
+ "version": "0.40.4",
4
4
  "description": "Manages configuration, ports and service discovery for locally running Kapeta systems",
5
5
  "type": "commonjs",
6
6
  "exports": {
@@ -49,7 +49,8 @@
49
49
  "homepage": "https://github.com/kapetacom/local-cluster-service#readme",
50
50
  "dependencies": {
51
51
  "@kapeta/codegen": "^1.3.0",
52
- "@kapeta/local-cluster-config": "^0.4.0",
52
+ "@kapeta/config-mapper": "^1.1.1",
53
+ "@kapeta/local-cluster-config": "^0.4.1",
53
54
  "@kapeta/nodejs-api-client": ">=0.2.0 <2",
54
55
  "@kapeta/nodejs-process": "^1.2.0",
55
56
  "@kapeta/nodejs-registry-utils": ">=0.11.1 <2",
@@ -78,8 +79,7 @@
78
79
  "stream-json": "^1.8.0",
79
80
  "tar-stream": "^3.1.6",
80
81
  "typescript": "^5.1.6",
81
- "yaml": "^1.6.0",
82
- "@kapeta/config-mapper": "^1.1.1"
82
+ "yaml": "^1.6.0"
83
83
  },
84
84
  "devDependencies": {
85
85
  "@kapeta/eslint-config": "^0.7.0",
@@ -180,4 +180,13 @@ router.put('/install', async (req: Request, res: Response) => {
180
180
  }
181
181
  });
182
182
 
183
+ router.get('/issues', async (req: Request, res: Response) => {
184
+ try {
185
+ const issues = await definitionsManager.getDefinitionErrors();
186
+ res.send(issues);
187
+ } catch (err: any) {
188
+ res.status(500).send({ error: err.message });
189
+ }
190
+ });
191
+
183
192
  export default router;
@@ -13,7 +13,7 @@ import { normalizeKapetaUri, parseKapetaUri } from '@kapeta/nodejs-utils';
13
13
  import { repositoryManager } from './repositoryManager';
14
14
 
15
15
  const TARGET_KIND = 'core/language-target';
16
- const BLOCK_TYPE_KIND = 'core/block-type';
16
+ const BLOCK_TYPE_REGEX = /^core\/block-type.*/;
17
17
 
18
18
  class CodeGeneratorManager {
19
19
  private async ensureLanguageTargetInRegistry(path: string, version: string, definition: Definition) {
@@ -68,7 +68,7 @@ class CodeGeneratorManager {
68
68
 
69
69
  const kindUri = parseKapetaUri(yamlContent.kind);
70
70
 
71
- const blockTypes = await definitionsManager.getDefinitions(BLOCK_TYPE_KIND);
71
+ const blockTypes = await definitionsManager.getDefinitions([BLOCK_TYPE_REGEX]);
72
72
  const blockTypeKinds = blockTypes.map(
73
73
  (blockType) => parseKapetaUri(blockType.definition.metadata.name).fullName
74
74
  );
@@ -27,8 +27,8 @@ function applyHandleChange(definition: DefinitionInfo, targetHandle: string) {
27
27
  return definition;
28
28
  }
29
29
 
30
- function normalizeFilters(kindFilter?: string | string[]) {
31
- let resolvedFilters: string[] = [];
30
+ function normalizeFilters(kindFilter?: string | (string | RegExp)[]) {
31
+ let resolvedFilters: any[] = [];
32
32
 
33
33
  if (kindFilter) {
34
34
  if (Array.isArray(kindFilter)) {
@@ -38,7 +38,7 @@ function normalizeFilters(kindFilter?: string | string[]) {
38
38
  }
39
39
  }
40
40
 
41
- return resolvedFilters.map((k) => k.toLowerCase());
41
+ return resolvedFilters;
42
42
  }
43
43
 
44
44
  class DefinitionsManager {
@@ -138,17 +138,24 @@ class DefinitionsManager {
138
138
  console.log('Rewrite done for sample plan');
139
139
  }
140
140
 
141
- private applyFilters(definitions: DefinitionInfo[], kindFilter: string[]): DefinitionInfo[] {
141
+ private applyFilters(definitions: DefinitionInfo[], kindFilter: (string | RegExp)[]): DefinitionInfo[] {
142
142
  if (kindFilter.length === 0) {
143
143
  return definitions;
144
144
  }
145
145
 
146
146
  return definitions.filter((d) => {
147
- return kindFilter.includes(d.definition.kind.toLowerCase());
147
+ const kind = d.definition.kind.toLowerCase();
148
+ return kindFilter.some((filter) => {
149
+ if (filter instanceof RegExp) {
150
+ return filter.test(kind);
151
+ } else {
152
+ return kind === filter.toLowerCase();
153
+ }
154
+ });
148
155
  });
149
156
  }
150
157
 
151
- public async getDefinitions(kindFilter?: string | string[]): Promise<DefinitionInfo[]> {
158
+ public async getDefinitions(kindFilter?: string | (string | RegExp)[]): Promise<DefinitionInfo[]> {
152
159
  kindFilter = normalizeFilters(kindFilter);
153
160
 
154
161
  const definitions = await doCached<Promise<DefinitionInfo[]>>('definitionsManager:all', () =>
@@ -168,6 +175,10 @@ class DefinitionsManager {
168
175
  );
169
176
  }
170
177
 
178
+ public async getDefinitionErrors() {
179
+ return ClusterConfiguration.getDefinitionErrors();
180
+ }
181
+
171
182
  public async getDefinition(ref: string) {
172
183
  const uri = parseKapetaUri(ref);
173
184
  const definitions = await this.getDefinitions();