1717import { KameletModel , Property } from '../model/KameletModels' ;
1818import * as yaml from 'js-yaml' ;
1919
20- const Kamelets : KameletModel [ ] = [ ] ;
21- const CustomNames : string [ ] = [ ] ;
20+ const CamelKamelets : KameletModel [ ] = [ ] ;
21+ const CustomKamelets : KameletModel [ ] = [ ] ;
22+ const ProjectKamelets : KameletModel [ ] = [ ] ;
2223const BlockedKamelets : string [ ] = [ ] ;
24+
2325export class KameletApi {
2426 private constructor ( ) { }
2527
2628 static getCustomKameletNames = ( ) : string [ ] => {
27- return CustomNames ;
29+ return CustomKamelets . map ( k => k . metadata . name ) ;
2830 } ;
2931
30- static saveCustomKameletNames = ( names : string [ ] ) => {
31- CustomNames . length = 0 ;
32- CustomNames . push ( ...names ) ;
32+ static getProjectKameletNames = ( ) : string [ ] => {
33+ return ProjectKamelets . map ( k => k . metadata . name ) ;
3334 } ;
3435
35- static saveCustomKameletName = ( name : string ) => {
36- CustomNames . push ( name ) ;
37- }
36+ static saveCustomKamelet = ( yaml : string ) : void => {
37+ const kamelet : KameletModel = KameletApi . yamlToKamelet ( yaml ) ;
38+ const kameletIndex = CustomKamelets . findIndex ( ( k : KameletModel ) => k . metadata . name === kamelet . metadata . name ) ;
39+ if ( kameletIndex === - 1 ) {
40+ CustomKamelets . push ( kamelet ) ;
41+ } else {
42+ CustomKamelets . splice ( kameletIndex , 1 , kamelet )
43+ }
44+ } ;
45+
46+ static saveCustomKamelets = ( kameletYamls : string [ ] , clean : boolean = false ) : void => {
47+ const kamelets : KameletModel [ ] = kameletYamls . map ( text => KameletApi . yamlToKamelet ( text ) ) ;
48+ if ( clean ) CustomKamelets . length = 0 ;
49+ CustomKamelets . push (
50+ ...kamelets . sort ( ( a , b ) =>
51+ a . spec . definition . title . localeCompare ( b . spec . definition . title , undefined , { sensitivity : 'base' } ) ,
52+ ) ,
53+ ) ;
54+ } ;
3855
39- static removeCustomKameletName = ( name : string ) => {
40- const index = CustomNames . indexOf ( name ) ;
41- if ( index > - 1 ) {
42- CustomNames . splice ( index , 1 ) ;
56+ static saveProjectKamelets = ( kameletYamls : string [ ] , clean : boolean = false ) : void => {
57+ const kamelets : KameletModel [ ] = kameletYamls . map ( text => KameletApi . yamlToKamelet ( text ) ) ;
58+ if ( clean ) ProjectKamelets . length = 0 ;
59+ ProjectKamelets . push (
60+ ...kamelets . sort ( ( a , b ) =>
61+ a . spec . definition . title . localeCompare ( b . spec . definition . title , undefined , { sensitivity : 'base' } ) ,
62+ ) ,
63+ ) ;
64+ } ;
65+
66+ static saveProjectKamelet = ( yaml : string ) : void => {
67+ const kamelet : KameletModel = KameletApi . yamlToKamelet ( yaml ) ;
68+ const kameletIndex = ProjectKamelets . findIndex ( ( k : KameletModel ) => k . metadata . name === kamelet . metadata . name ) ;
69+ if ( kameletIndex === - 1 ) {
70+ ProjectKamelets . push ( kamelet ) ;
71+ } else {
72+ ProjectKamelets . splice ( kameletIndex , 1 , kamelet )
4373 }
44- }
74+ } ;
4575
4676 static getKameletProperties = ( kameletName : string ) : Property [ ] => {
4777 const kamelet : KameletModel | undefined = KameletApi . findKameletByName ( kameletName ) ;
@@ -71,8 +101,8 @@ export class KameletApi {
71101 }
72102 } ;
73103
74- static getKamelets = ( ) : KameletModel [ ] => {
75- return Kamelets . sort ( ( a , b ) => a . title ( ) . localeCompare ( b . title ( ) , undefined , { sensitivity : 'base' } ) ) ;
104+ static getAllKamelets = ( ) : KameletModel [ ] => {
105+ return [ ... ProjectKamelets , ... CustomKamelets , ... CamelKamelets ] . sort ( ( a , b ) => a . title ( ) . localeCompare ( b . title ( ) , undefined , { sensitivity : 'base' } ) ) ;
76106 } ;
77107
78108 static jsonToKamelet = ( json : string ) : KameletModel => {
@@ -82,7 +112,11 @@ export class KameletApi {
82112 } ;
83113
84114 static findKameletByName = ( name : string ) : KameletModel | undefined => {
85- return Kamelets . find ( ( k : KameletModel ) => k . metadata . name === name ) ;
115+ for ( const list of [ ProjectKamelets , CustomKamelets , CamelKamelets ] ) {
116+ const found = list . find ( ( k ) => k . metadata . name === name ) ;
117+ if ( found ) return found ;
118+ }
119+ return undefined ;
86120 } ;
87121
88122 static findKameletByUri = ( uri : string ) : KameletModel | undefined => {
@@ -94,37 +128,16 @@ export class KameletApi {
94128 return KameletApi . jsonToKamelet ( JSON . stringify ( fromYaml ) ) ;
95129 } ;
96130
97- static saveKamelets = ( kameletYamls : string [ ] , clean : boolean = false ) : void => {
131+ static saveCamelKamelets = ( kameletYamls : string [ ] , clean : boolean = false ) : void => {
98132 const kamelets : KameletModel [ ] = kameletYamls . map ( text => KameletApi . yamlToKamelet ( text ) ) ;
99- if ( clean ) Kamelets . length = 0 ;
100- Kamelets . push (
133+ if ( clean ) CamelKamelets . length = 0 ;
134+ CamelKamelets . push (
101135 ...kamelets . sort ( ( a , b ) =>
102136 a . spec . definition . title . localeCompare ( b . spec . definition . title , undefined , { sensitivity : 'base' } ) ,
103137 ) ,
104138 ) ;
105139 } ;
106140
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-
128141 static saveBlockedKameletNames = ( names : string [ ] ) : void => {
129142 BlockedKamelets . length = 0 ;
130143 BlockedKamelets . push ( ...names ) ;
@@ -140,7 +153,7 @@ export class KameletApi {
140153 }
141154 return BlockedKamelets ;
142155 }
143-
156+
144157 static getBlockedKameletNames = ( ) => {
145158 return BlockedKamelets ;
146159 }
0 commit comments