karavan-core 4.8.0 → 99.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of karavan-core might be problematic. Click here for more details.

Files changed (115) hide show
  1. package/index.js +3 -0
  2. package/package.json +8 -58
  3. package/.bebelrc +0 -3
  4. package/.mocharc.json +0 -11
  5. package/.prettierignore +0 -9
  6. package/.prettierrc +0 -14
  7. package/src/core/api/CamelDefinitionApi.ts +0 -3271
  8. package/src/core/api/CamelDefinitionApiExt.ts +0 -757
  9. package/src/core/api/CamelDefinitionYaml.ts +0 -412
  10. package/src/core/api/CamelDefinitionYamlStep.ts +0 -4733
  11. package/src/core/api/CamelDisplayUtil.ts +0 -143
  12. package/src/core/api/CamelUtil.ts +0 -360
  13. package/src/core/api/ComponentApi.ts +0 -368
  14. package/src/core/api/KameletApi.ts +0 -147
  15. package/src/core/api/MainConfigurationApi.ts +0 -47
  16. package/src/core/api/ProjectModelApi.ts +0 -75
  17. package/src/core/api/SpiBeanApi.ts +0 -104
  18. package/src/core/api/TemplateApi.ts +0 -58
  19. package/src/core/api/TopologyUtils.ts +0 -392
  20. package/src/core/api/VariableUtil.ts +0 -104
  21. package/src/core/model/CamelDefinition.ts +0 -3783
  22. package/src/core/model/CamelMetadata.ts +0 -2714
  23. package/src/core/model/ComponentModels.ts +0 -106
  24. package/src/core/model/IntegrationDefinition.ts +0 -188
  25. package/src/core/model/KameletModels.ts +0 -223
  26. package/src/core/model/MainConfigurationModel.ts +0 -37
  27. package/src/core/model/ProjectModel.ts +0 -43
  28. package/src/core/model/SpiBeanModels.ts +0 -53
  29. package/src/core/model/TopologyDefinition.ts +0 -117
  30. package/test/addStep.spec.ts +0 -124
  31. package/test/addStep1.yaml +0 -27
  32. package/test/allowableValues.camel.yaml +0 -19
  33. package/test/allowableValues.spec.ts +0 -30
  34. package/test/avro-serialize-action.kamelet.yaml +0 -70
  35. package/test/beans.spec.ts +0 -92
  36. package/test/beans1.yaml +0 -36
  37. package/test/beans2.yaml +0 -42
  38. package/test/beans3.yaml +0 -7
  39. package/test/checkRequired.spec.ts +0 -53
  40. package/test/circuitBreaker.spec.ts +0 -57
  41. package/test/circuitBreaker.yaml +0 -19
  42. package/test/cloneDefinition.spec.ts +0 -106
  43. package/test/createKamelet.spec.ts +0 -38
  44. package/test/cxf.json +0 -615
  45. package/test/cxf.spec.ts +0 -44
  46. package/test/cxf.yaml +0 -15
  47. package/test/deleteStep.spec.ts +0 -74
  48. package/test/demo.spec.ts +0 -49
  49. package/test/demo.yaml +0 -32
  50. package/test/doCatchOnWhen.camel.yaml +0 -20
  51. package/test/doCatchOnWhen.spec.ts +0 -36
  52. package/test/errorHandler.spec.ts +0 -38
  53. package/test/errorHandler1.yaml +0 -27
  54. package/test/expression.spec.ts +0 -55
  55. package/test/findStep.spec.ts +0 -112
  56. package/test/findStep.yaml +0 -65
  57. package/test/getElementProperties.spec.ts +0 -32
  58. package/test/getElementPropertiesByName.spec.ts +0 -31
  59. package/test/getExpressionLanguage.spec.ts +0 -40
  60. package/test/hasElementWithId.camel.yaml +0 -98
  61. package/test/hasElementWithId.spec.ts +0 -57
  62. package/test/hasElementWithId1.camel.yaml +0 -16
  63. package/test/hasElementWithIdError.camel.yaml +0 -98
  64. package/test/integration.spec.ts +0 -60
  65. package/test/integration1.yaml +0 -24
  66. package/test/integration2.yaml +0 -23
  67. package/test/integrationToYaml.spec.ts +0 -51
  68. package/test/intercept.spec.ts +0 -62
  69. package/test/intercept.yaml +0 -19
  70. package/test/is-not-integration.yaml +0 -5114
  71. package/test/isIntegration.spec.ts +0 -45
  72. package/test/kamelet.spec.ts +0 -61
  73. package/test/metadata/components.json +0 -697
  74. package/test/metadata/kamelets.yaml +0 -23414
  75. package/test/metadata/spiBeans.json +0 -3094
  76. package/test/multiObjectProperties.spec.ts +0 -46
  77. package/test/multiObjectProperties1.yaml +0 -19
  78. package/test/multiple.spec.ts +0 -38
  79. package/test/multiple.yaml +0 -29
  80. package/test/openapi.spec.ts +0 -48
  81. package/test/openapi.yaml +0 -7
  82. package/test/placeholder.spec.ts +0 -32
  83. package/test/placeholder.yaml +0 -133
  84. package/test/plain-try-catch.yaml +0 -31
  85. package/test/plain.spec.ts +0 -72
  86. package/test/plain1.yaml +0 -22
  87. package/test/plain2.yaml +0 -13
  88. package/test/plain3.yaml +0 -5
  89. package/test/plain4.yaml +0 -5
  90. package/test/postgresql-source.kamelet.yaml +0 -113
  91. package/test/restConfigDsl.yaml +0 -15
  92. package/test/restDsl.spec.ts +0 -83
  93. package/test/restDsl.yaml +0 -29
  94. package/test/routes.spec.ts +0 -37
  95. package/test/routes1.yaml +0 -31
  96. package/test/supported-components.json +0 -1221
  97. package/test/supportedComponents.spec.ts +0 -34
  98. package/test/template1.AggregationStrategy.java +0 -21
  99. package/test/template1.Processor.java +0 -13
  100. package/test/template2.AggregationStrategy.java +0 -21
  101. package/test/template2.Processor.java +0 -13
  102. package/test/templateApi.spec.ts +0 -45
  103. package/test/timer-source.kamelet.yaml +0 -75
  104. package/test/tod.spec.ts +0 -31
  105. package/test/tod.yaml +0 -9
  106. package/test/topology.spec.ts +0 -51
  107. package/test/topology1.camel.yaml +0 -56
  108. package/test/topology2.camel.yaml +0 -44
  109. package/test/topology3.camel.yaml +0 -27
  110. package/test/tsconfig.testing.json +0 -14
  111. package/test/updateStep.spec.ts +0 -72
  112. package/test/variable1.camel.yaml +0 -42
  113. package/test/variable2.camel.yaml +0 -42
  114. package/test/variables.spec.ts +0 -34
  115. package/tsconfig.json +0 -34
@@ -1,368 +0,0 @@
1
- /*
2
- * Licensed to the Apache Software Foundation (ASF) under one or more
3
- * contributor license agreements. See the NOTICE file distributed with
4
- * this work for additional information regarding copyright ownership.
5
- * The ASF licenses this file to You under the Apache License, Version 2.0
6
- * (the "License"); you may not use this file except in compliance with
7
- * the License. You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { Component, ComponentHeader, ComponentProperty, SupportedComponent } from '../model/ComponentModels';
18
- import { CamelElement } from '../model/IntegrationDefinition';
19
-
20
- const Components: Component[] = [];
21
- const SupportedComponents: SupportedComponent[] = [];
22
- let SupportedOnly: boolean = false;
23
- const BlockedComponents: string[] = [];
24
-
25
- export const INTERNAL_COMPONENTS = ['direct', 'seda', 'vertx']
26
-
27
- export class ComponentApi {
28
- private constructor() {}
29
-
30
- static setSupportedOnly = (supportedOnly: boolean): void => {
31
- SupportedOnly = supportedOnly;
32
- };
33
-
34
- static saveSupportedComponents = (jsons: string): void => {
35
- SupportedComponents.length = 0;
36
- const sc: SupportedComponent[] = (JSON.parse(jsons) as []).map(json => new SupportedComponent(json));
37
- SupportedComponents.push(...sc);
38
- };
39
-
40
- static getSupportedComponents = (): SupportedComponent[] => {
41
- return SupportedComponents;
42
- };
43
-
44
- static jsonToComponent = (json: string): Component => {
45
- const fromJson: Component = JSON.parse(json) as Component;
46
- const k: Component = new Component(fromJson);
47
- return k;
48
- };
49
-
50
- static saveComponents = (jsons: string[], clean: boolean = false): void => {
51
- if (clean) Components.length = 0;
52
- const components: Component[] = jsons.map(json => ComponentApi.jsonToComponent(json));
53
- Components.push(...components);
54
- };
55
-
56
- static saveComponent = (json: string): void => {
57
- const component: Component = ComponentApi.jsonToComponent(json);
58
- if (Components.findIndex((c: Component) => c.component.name === component.component.name) === -1) {
59
- Components.push(component);
60
- }
61
- };
62
-
63
- static getComponents = (): Component[] => {
64
- const comps: Component[] = [];
65
- if (SupportedOnly) {
66
- comps.push(
67
- ...Components.filter(
68
- comp => SupportedComponents.findIndex(sc => sc.name === comp.component.name) !== -1,
69
- ),
70
- );
71
- } else {
72
- comps.push(...Components);
73
- }
74
- return comps
75
- .map(comp => {
76
- const sc = SupportedComponents.find(sc => sc.name === comp.component.name);
77
- if (sc !== undefined) {
78
- comp.component.supportLevel = sc.level;
79
- comp.component.supportType = 'Supported';
80
- return comp;
81
- } else {
82
- comp.component.supportType = 'Community';
83
- return comp;
84
- }
85
- })
86
- .sort((a, b) => a.component.name.localeCompare(b.component.name, undefined, { sensitivity: 'base' }));
87
- };
88
-
89
- static findByName = (name: string): Component | undefined => {
90
- return ComponentApi.getComponents().find((c: Component) => c.component.name === name);
91
- };
92
-
93
- static findStepComponent = (step?: CamelElement): Component | undefined => {
94
- return ComponentApi.findByName((step as any)?.uri)
95
- };
96
-
97
- static getComponentHeadersList = (step?: CamelElement): ComponentHeader [] => {
98
- const component = step && ComponentApi.findStepComponent(step);
99
- if (component && component.headers) {
100
- return Object.getOwnPropertyNames(component.headers).map(n => {
101
- const header = component.headers[n];
102
- header.name = n;
103
- return header;
104
- })
105
- } else {
106
- return [];
107
- }
108
- };
109
-
110
- static getComponentNameFromUri = (uri: string): string | undefined => {
111
- return uri !== undefined ? uri.split(':')[0] : undefined;
112
- };
113
-
114
- static getComponentTitleFromUri = (uri: string): string | undefined => {
115
- if (uri !== undefined) {
116
- const componentName = uri.split(':')[0];
117
- const title = ComponentApi.findByName(componentName)?.component.title;
118
- return title ? title : componentName;
119
- } else {
120
- return undefined;
121
- }
122
- };
123
-
124
- static getComponentDescriptionFromUri = (uri: string): string | undefined => {
125
- if (uri !== undefined) {
126
- const componentName = uri.split(':')[0];
127
- const description = ComponentApi.findByName(componentName)?.component.description;
128
- return description ? description : componentName;
129
- } else {
130
- return undefined;
131
- }
132
- };
133
-
134
- static parseElementUri(def: any): any {
135
- if (def.dslName === 'ToDynamicDefinition') {
136
- return def;
137
- }
138
- const uriParts = ComponentApi.parseUri(def.uri);
139
- if (uriParts.length > 1 && !def.uri.startsWith('kamelet:')) {
140
- const uriValues = ComponentApi.getUriParts(def.uri);
141
- uriValues.forEach((value, key) => {
142
- def.parameters[key] = value;
143
- });
144
- def.uri = uriParts[0];
145
- }
146
- return def;
147
- }
148
-
149
- static getUriParts = (uri: string): Map<string, string> => {
150
- const result: Map<string, string> = new Map<string, string>();
151
- const name = ComponentApi.getComponentNameFromUri(uri);
152
- if (name) {
153
- const component = ComponentApi.findByName(name);
154
- const syntax = component?.component.syntax;
155
- const syntaxParts = ComponentApi.parseSyntax(syntax + '');
156
- const syntaxSeparators = ComponentApi.getSyntaxSeparators(syntax + '');
157
- let newUri = uri === name ? name + syntaxSeparators.join('') : uri;
158
-
159
- if (name === 'salesforce') {
160
- // workaround for salesforce component
161
- const parts = newUri.split(':');
162
- if (parts.length === 2) result.set('operationName', parts.at(1) || '').set('topicName', '');
163
- else if (parts.length === 3)
164
- result.set('operationName', parts.at(1) || '').set('topicName', parts.at(2) || '');
165
- } else if (name === 'cxf') {
166
- // workaround for CXF component
167
- const cxfParts = newUri.split(':');
168
- const firstPart = cxfParts.at(1);
169
- const secondPart = cxfParts.at(2);
170
- if (cxfParts.length === 3 && firstPart === 'bean' && secondPart)
171
- result.set('beanId', firstPart + ':' + secondPart);
172
- if (cxfParts.length === 2 && firstPart?.startsWith('//')) result.set('address', firstPart);
173
- } else if (name === 'jt400') {
174
- // workaround for JT400 component
175
- const jt400Parts = newUri.split('.').join(':').split('/').join(':').split('@').join(':').split(':');
176
- const userID = jt400Parts.at(1) || '';
177
- const password = jt400Parts.at(2) || '';
178
- const systemName = jt400Parts.at(3) || '';
179
- const objectPath = jt400Parts.at(4) || '';
180
- const type = jt400Parts.at(5) || '';
181
- result.set('userID', userID);
182
- result.set('password', password);
183
- result.set('systemName', systemName);
184
- result.set('objectPath', objectPath);
185
- result.set('type', type);
186
- } else {
187
- // workarounds end
188
- syntaxParts
189
- .filter((_, i) => i > 0)
190
- .forEach((part, index) => {
191
- if (index < syntaxParts.length - 1) {
192
- const startSeparator = syntaxSeparators[index];
193
- const endSeparator = syntaxSeparators[index + 1];
194
- const start = newUri.indexOf(startSeparator) + startSeparator.length;
195
- const end = endSeparator ? newUri.indexOf(endSeparator, start) : newUri.length;
196
- const val = newUri.substring(start, end);
197
- result.set(part, val);
198
- newUri = newUri.substring(end);
199
- }
200
- });
201
- }
202
- }
203
- return result;
204
- };
205
-
206
- static parseSyntax = (syntax: string): string[] => {
207
- const separators: string[] = ['://', '//', ':', '/', '#'];
208
- let simplifiedSyntax = '' + syntax;
209
- separators.forEach(s => {
210
- simplifiedSyntax = simplifiedSyntax?.replaceAll(s, ':');
211
- });
212
- return simplifiedSyntax.split(':');
213
- };
214
-
215
- static getSyntaxSeparators = (syntax: string): string[] => {
216
- const result: string[] = [];
217
- const parts: string[] = ComponentApi.parseSyntax(syntax);
218
- let str = '';
219
- parts.forEach((part, index) => {
220
- if (index < parts.length - 1) {
221
- const start = syntax.indexOf(part, str.length) + part.length;
222
- const end = syntax.indexOf(parts[index + 1], start);
223
- const separator = syntax.substring(start, end);
224
- result.push(separator);
225
- str = str + part + separator;
226
- }
227
- });
228
- return result;
229
- };
230
-
231
- static parseUri = (uri?: string): string[] => {
232
- const separators: string[] = ['://', '//', ':', '/', '#'];
233
- let simplifiedUri = '' + uri;
234
- separators.forEach(s => {
235
- simplifiedUri = simplifiedUri.replaceAll(s, ':');
236
- });
237
- return simplifiedUri.split(':');
238
- };
239
-
240
- static getUriSeparators = (uri: string): string[] => {
241
- const result: string[] = [];
242
- const name = ComponentApi.getComponentNameFromUri(uri);
243
- if (name) {
244
- const component = ComponentApi.findByName(name);
245
- const syntax = '' + component?.component.syntax;
246
- const parts: string[] = Array.from(ComponentApi.getUriParts(uri).keys());
247
- let str = '';
248
- parts.forEach((part, index) => {
249
- if (index < parts.length - 1) {
250
- const start = syntax.indexOf(part, str.length) + part.length;
251
- const end = syntax.indexOf(parts[index + 1], start);
252
- const separator = syntax.substring(start, end);
253
- result.push(separator);
254
- str = str + part + separator;
255
- }
256
- });
257
- }
258
- return result;
259
- };
260
-
261
- static getPathParameterValue = (uri: string, pathParameter: string): string | undefined => {
262
- return ComponentApi.getUriParts(uri).get(pathParameter);
263
- };
264
-
265
- static getComponentProperties = (componentName: string, type: 'consumer' | 'producer'): ComponentProperty[] => {
266
- const invertedType = type === 'consumer' ? 'producer' : 'consumer';
267
- const component: Component | undefined = ComponentApi.findByName(componentName);
268
- const properties: ComponentProperty[] = [];
269
- if (component !== undefined && component.properties) {
270
- for (const [key, value] of Object.entries(component.properties) as [string, any][]) {
271
- const prop = new ComponentProperty();
272
- prop.name = key;
273
- prop.label = value.label;
274
- prop.description = value.description;
275
- prop.type = value.type;
276
- prop.displayName = value.displayName;
277
- prop.group = value.group;
278
- prop.type = value.type;
279
- prop.deprecated = value.deprecated;
280
- prop.secret = value.secret;
281
- prop.enum = value.enum;
282
- prop.kind = value.kind;
283
- prop.required = value.required;
284
- if (value.defaultValue) {
285
- prop.defaultValue = value.defaultValue;
286
- }
287
- if (!value.deprecated) {
288
- properties.push(prop);
289
- }
290
- }
291
- }
292
- const result: ComponentProperty[] = [];
293
- result.push(...properties.filter(p => p.kind === 'path'));
294
- result.push(...properties.filter(p => p.kind !== 'path' && p.required));
295
- result.push(...properties.filter(p => p.label.length === 0 && p.kind !== 'path' && !p.required));
296
- result.push(
297
- ...properties.filter(p => !p.label.includes(invertedType) && !p.label.includes('advanced') && !p.required),
298
- );
299
- result.push(...properties.filter(p => p.label === 'formatting' && !p.required));
300
- result.push(
301
- ...properties.filter(
302
- p =>
303
- !p.label.includes(invertedType) &&
304
- (p.label.includes('scheduler') || p.label.includes('security') || p.label.includes('advanced')),
305
- ),
306
- );
307
- result.push(
308
- ...properties.filter(
309
- p =>
310
- !p.label.includes(invertedType) &&
311
- (p.label.includes('scheduler') || p.label.includes('security') || p.label.includes('advanced')),
312
- ),
313
- );
314
- return Array.from(new Map(result.map(item => [item.name, item])).values());
315
- };
316
-
317
-
318
- static getComponentHeaders = (componentName: string, type: 'consumer' | 'producer'): ComponentHeader[] => {
319
- const invertedType = type === 'consumer' ? 'producer' : 'consumer';
320
- const component: Component | undefined = ComponentApi.findByName(componentName);
321
- const properties: ComponentHeader[] = [];
322
- if (component !== undefined && component.headers) {
323
- for (const [key, value] of Object.entries(component.headers) as [string, any][]) {
324
- const prop = new ComponentHeader();
325
- prop.name = key;
326
- prop.label = value.label;
327
- prop.description = value.description;
328
- prop.index = value.index;
329
- prop.displayName = value.displayName;
330
- prop.group = value.group;
331
- prop.deprecated = value.deprecated;
332
- prop.secret = value.secret;
333
- prop.kind = value.kind;
334
- prop.constantName = value.constantName;
335
- prop.defaultValue = value.defaultValue;
336
- prop.javaType = value.javaType;
337
- prop.autowired = value.autowired;
338
- if (!value.deprecated) {
339
- properties.push(prop);
340
- }
341
- }
342
- }
343
- return Array.from(new Map(properties.map(item => [item.name, item])).values());
344
- };
345
-
346
-
347
- static saveBlockedComponentNames = (componentNames: string[]) => {
348
- BlockedComponents.length = 0;
349
- BlockedComponents.push(...componentNames);
350
- }
351
-
352
-
353
- static saveBlockedComponentName = (componentName: string, checked :boolean) => {
354
- const index = BlockedComponents.indexOf(componentName);
355
- if (!checked && index === -1) {
356
- BlockedComponents.push(componentName);
357
- }
358
- else if (checked && index > -1) {
359
- BlockedComponents.splice(index, 1);
360
- }
361
- return BlockedComponents;
362
- }
363
-
364
-
365
- static getBlockedComponentNames = () => {
366
- return BlockedComponents;
367
- }
368
- }
@@ -1,147 +0,0 @@
1
- /*
2
- * Licensed to the Apache Software Foundation (ASF) under one or more
3
- * contributor license agreements. See the NOTICE file distributed with
4
- * this work for additional information regarding copyright ownership.
5
- * The ASF licenses this file to You under the Apache License, Version 2.0
6
- * (the "License"); you may not use this file except in compliance with
7
- * the License. You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { KameletModel, Property } from '../model/KameletModels';
18
- import * as yaml from 'js-yaml';
19
-
20
- const Kamelets: KameletModel[] = [];
21
- const CustomNames: string[] = [];
22
- const BlockedKamelets: string[] = [];
23
- export class KameletApi {
24
- private constructor() {}
25
-
26
- static getCustomKameletNames = (): string[] => {
27
- return CustomNames;
28
- };
29
-
30
- static saveCustomKameletNames = (names: string[]) => {
31
- CustomNames.length = 0;
32
- CustomNames.push(...names);
33
- };
34
-
35
- static saveCustomKameletName = (name: string) => {
36
- CustomNames.push(name);
37
- }
38
-
39
- static removeCustomKameletName = (name: string) => {
40
- const index = CustomNames.indexOf(name);
41
- if (index > -1) {
42
- CustomNames.splice(index,1);
43
- }
44
- }
45
-
46
- static getKameletProperties = (kameletName: string): Property[] => {
47
- const kamelet: KameletModel | undefined = KameletApi.findKameletByName(kameletName);
48
- const properties: Property[] = [];
49
- try {
50
- if (kamelet !== undefined) {
51
- const map: Map<string, any> = kamelet.spec.definition.properties
52
- ? new Map(Object.entries(kamelet.spec.definition.properties))
53
- : new Map();
54
- map.forEach((value, key) => {
55
- const prop = new Property();
56
- prop.id = key;
57
- prop.title = value.title;
58
- prop.default = value.default;
59
- prop.description = value.description;
60
- prop.format = value.format;
61
- prop.example = value.example;
62
- prop.type = value.type;
63
- prop.enum = value.enum;
64
- if (value.default) prop.value = value.default;
65
- prop['x-descriptors'] = value['x-descriptors'];
66
- properties.push(prop);
67
- });
68
- }
69
- } finally {
70
- return properties;
71
- }
72
- };
73
-
74
- static getKamelets = (): KameletModel[] => {
75
- return Kamelets.sort((a, b) => a.title().localeCompare(b.title(), undefined, { sensitivity: 'base' }));
76
- };
77
-
78
- static jsonToKamelet = (json: string): KameletModel => {
79
- const fromJson: KameletModel = JSON.parse(json) as KameletModel;
80
- const k: KameletModel = new KameletModel(fromJson);
81
- return k;
82
- };
83
-
84
- static findKameletByName = (name: string): KameletModel | undefined => {
85
- return Kamelets.find((k: KameletModel) => k.metadata.name === name);
86
- };
87
-
88
- static findKameletByUri = (uri: string): KameletModel | undefined => {
89
- return KameletApi.findKameletByName(uri.split(':')[1]);
90
- };
91
-
92
- static yamlToKamelet = (text: string): KameletModel => {
93
- const fromYaml = yaml.load(text);
94
- return KameletApi.jsonToKamelet(JSON.stringify(fromYaml));
95
- };
96
-
97
- static saveKamelets = (kameletYamls: string[], clean: boolean = false): void => {
98
- const kamelets: KameletModel[] = kameletYamls.map(text => KameletApi.yamlToKamelet(text));
99
- if (clean) Kamelets.length = 0;
100
- Kamelets.push(
101
- ...kamelets.sort((a, b) =>
102
- a.spec.definition.title.localeCompare(b.spec.definition.title, undefined, { sensitivity: 'base' }),
103
- ),
104
- );
105
- };
106
-
107
- static saveKamelet = (yaml: string): void => {
108
- const kamelet: KameletModel = KameletApi.yamlToKamelet(yaml);
109
- const kameletIndex = Kamelets.findIndex((k: KameletModel) => k.metadata.name === kamelet.metadata.name);
110
- if (kameletIndex === -1) {
111
- Kamelets.push(kamelet);
112
- KameletApi.saveCustomKameletName(kamelet.metadata.name);
113
- }
114
- else {
115
- Kamelets.splice(kameletIndex, 1, kamelet)
116
- }
117
- };
118
-
119
- static removeKamelet = (yaml: string): void => {
120
- const kamelet: KameletModel = KameletApi.yamlToKamelet(yaml);
121
- const kameletIndex = Kamelets.findIndex((k: KameletModel) => k.metadata.name === kamelet.metadata.name);
122
- if (kameletIndex > -1) {
123
- Kamelets.splice(kameletIndex,1);
124
- KameletApi.removeCustomKameletName(kamelet.metadata.name);
125
- }
126
- };
127
-
128
- static saveBlockedKameletNames = (names: string[]): void => {
129
- BlockedKamelets.length = 0;
130
- BlockedKamelets.push(...names);
131
- }
132
-
133
- static saveBlockedKameletName = (name: string, checked: boolean) => {
134
- const index = BlockedKamelets.indexOf(name);
135
- if ( !checked && index === -1) {
136
- BlockedKamelets.push(name);
137
- }
138
- else if ( checked && index > -1) {
139
- BlockedKamelets.splice(index, 1);
140
- }
141
- return BlockedKamelets;
142
- }
143
-
144
- static getBlockedKameletNames = () => {
145
- return BlockedKamelets;
146
- }
147
- }
@@ -1,47 +0,0 @@
1
- /*
2
- * Licensed to the Apache Software Foundation (ASF) under one or more
3
- * contributor license agreements. See the NOTICE file distributed with
4
- * this work for additional information regarding copyright ownership.
5
- * The ASF licenses this file to You under the Apache License, Version 2.0
6
- * (the "License"); you may not use this file except in compliance with
7
- * the License. You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { ApplicationProperty, ApplicationPropertyGroup } from '../model/MainConfigurationModel';
18
-
19
- const MainApplicationProperties: ApplicationProperty[] = [];
20
- const MainApplicationGroups: ApplicationPropertyGroup[] = [];
21
-
22
- export class MainConfigurationApi {
23
- private constructor() {}
24
-
25
-
26
- static saveApplicationProperties = (objects: [], clean: boolean = false): void => {
27
- if (clean) MainApplicationProperties.length = 0;
28
- const properties: ApplicationProperty[] = objects.map(object => new ApplicationProperty(object));
29
- MainApplicationProperties.push(...properties);
30
- };
31
-
32
- static getApplicationProperties = (): ApplicationProperty[] => {
33
- const comps: ApplicationProperty[] = [];
34
- comps.push(...MainApplicationProperties);
35
- return comps;
36
- };
37
-
38
- static findByName = (name: string): ApplicationProperty | undefined => {
39
- return MainConfigurationApi.getApplicationProperties().find((c: ApplicationProperty) => c.name === name);
40
- };
41
-
42
- static saveApplicationPropertyGroups = (objects: []): void => {
43
- MainApplicationGroups.length = 0;
44
- const properties: ApplicationPropertyGroup[] = objects.map(object => new ApplicationPropertyGroup(object));
45
- MainApplicationProperties.push(...properties);
46
- };
47
- }
@@ -1,75 +0,0 @@
1
- /*
2
- * Licensed to the Apache Software Foundation (ASF) under one or more
3
- * contributor license agreements. See the NOTICE file distributed with
4
- * this work for additional information regarding copyright ownership.
5
- * The ASF licenses this file to You under the Apache License, Version 2.0
6
- * (the "License"); you may not use this file except in compliance with
7
- * the License. You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { ProjectModel, ProjectProperty } from '../model/ProjectModel';
18
-
19
- export class ProjectModelApi {
20
- private constructor() {}
21
-
22
- static propertiesToProject = (properties: string): ProjectModel => {
23
- const lines = properties.split(/\r?\n/).filter(text => text.trim().length > 0 && !text.trim().startsWith('#'));
24
- const project = new ProjectModel();
25
-
26
- project.properties = lines.map(value => ProjectModelApi.stringToProperty(value));
27
- return project;
28
- };
29
-
30
- static stringToProperty = (line: string): ProjectProperty => {
31
- const pair = line.split('=');
32
- const value = pair[1];
33
- return ProjectProperty.createNew(pair[0], value);
34
- };
35
-
36
- static propertiesToString = (properties: ProjectProperty[]): string => {
37
- return properties
38
- .map(({ key, value }) => {
39
- if (key !== undefined && value !== undefined) return `${key}=${value}`;
40
- return '';
41
- })
42
- .join('\n');
43
- };
44
-
45
- static getProfiles = (properties: ProjectProperty[]): string[] => {
46
- const result: string[] = [];
47
- properties.forEach(({ key }) => {
48
- if (key.startsWith('%')) {
49
- const profile = key.substring(1, key.indexOf('.'));
50
- if (!result.includes(profile)) result.push(profile);
51
- }
52
- });
53
- return result;
54
- };
55
-
56
- static updateProperties = (properties: string, project: ProjectModel): string => {
57
- const mapFromProject: Map<string, any> = ProjectModelApi.projectToMap(project);
58
- const result: string[] = [];
59
-
60
- for (const [key, value] of mapFromProject) {
61
- if (value !== undefined) result.push(`${key}=${value}`);
62
- }
63
-
64
- return result.join('\n');
65
- };
66
-
67
- static projectToMap = (project: ProjectModel): Map<string, any> => {
68
- const map = new Map<string, any>();
69
-
70
- if (project.properties && project.properties.length > 0) {
71
- project.properties.forEach(({ key, value }) => map.set(key, value));
72
- }
73
- return map;
74
- };
75
- }