blob: beef08ce8ee76ae5958749aab08272f6d7a15e35 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export class Property {
id: string = '';
title: string = '';
description: string = '';
type: string = '';
default: string = '';
format: string = '';
example: string = '';
'x-descriptors': string = '';
value: string | number | boolean = '';
}
export class Definition {
title: string = '';
description: string = '';
required: string[] = [];
properties: any = {};
public constructor(init?: Partial<Definition>) {
Object.assign(this, init);
}
}
export class KameletSpec {
definition: Definition = new Definition();
types: any = {};
flow: any = {};
public constructor(init?: Partial<KameletSpec>) {
Object.assign(this, init);
}
}
export class Labels {
'camel.apache.org/kamelet.type': string | any = '';
public constructor(init?: Partial<Labels>) {
Object.assign(this, init);
}
}
export class Annotations {
'camel.apache.org/kamelet.icon': string | any = '';
'camel.apache.org/catalog.version': string | any = '';
public constructor(init?: Partial<Annotations>) {
Object.assign(this, init);
}
}
export class KameletMetadata {
name: string = '';
labels: Labels = new Labels();
annotations: Annotations = new Annotations();
public constructor(init?: Partial<KameletMetadata>) {
Object.assign(this, init);
}
}
export class KameletModel {
apiVersion: string = 'camel.apache.org/v1alpha1';
kind: string = 'Kamelet';
metadata: KameletMetadata = new KameletMetadata();
spec: KameletSpec = new KameletSpec();
public constructor(init?: Partial<KameletModel>) {
Object.assign(this, init);
}
type(): string {
return this.metadata.labels["camel.apache.org/kamelet.type"] || '';
}
icon(): string {
return this.metadata.annotations["camel.apache.org/kamelet.icon"] || '';
}
version(): string {
return this.metadata.annotations["camel.apache.org/catalog.version"] || '';
}
title(): string {
return this.spec.definition.title;
}
properties(): any {
return this.spec.definition.properties;
}
static default = (): KameletModel[] => defaultKamelets;
}
const defaultKamelets: KameletModel[] = [
new KameletModel({
kind: 'uri',
apiVersion: '',
metadata: new KameletMetadata({
name: 'uri-source',
labels: new Labels({ 'camel.apache.org/kamelet.type': 'source' }),
annotations: new Annotations({'camel.apache.org/kamelet.icon': "data:image/svg+xml,%3Csvg viewBox='0 0 130.21 130.01' xmlns='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3ClinearGradient id='a' x1='333.48' x2='477' y1='702.6' y2='563.73' gradientTransform='translate(94.038 276.06) scale(.99206)' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23F69923' offset='0'/%3E%3Cstop stop-color='%23F79A23' offset='.11'/%3E%3Cstop stop-color='%23E97826' offset='.945'/%3E%3C/linearGradient%3E%3ClinearGradient id='b' x1='333.48' x2='477' y1='702.6' y2='563.73' gradientTransform='translate(94.038 276.06) scale(.99206)' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23F69923' offset='0'/%3E%3Cstop stop-color='%23F79A23' offset='.08'/%3E%3Cstop stop-color='%23E97826' offset='.419'/%3E%3C/linearGradient%3E%3ClinearGradient id='c' x1='633.55' x2='566.47' y1='814.6' y2='909.12' gradientTransform='translate(-85.421 56.236)' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23f6e423' offset='0'/%3E%3Cstop stop-color='%23F79A23' offset='.412'/%3E%3Cstop stop-color='%23E97826' offset='.733'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg transform='translate(-437.89 -835.29)'%3E%3Ccircle cx='503.1' cy='900.29' r='62.52' fill='url(%23a)' stroke='url(%23b)' stroke-linejoin='round' stroke-width='4.96'/%3E%3Cpath d='M487.89 873.64a89.53 89.53 0 0 0-2.688.031c-1.043.031-2.445.362-4.062.906 27.309 20.737 37.127 58.146 20.25 90.656.573.015 1.142.063 1.719.063 30.844 0 56.62-21.493 63.28-50.312-19.572-22.943-46.117-41.294-78.5-41.344z' fill='url(%23c)' opacity='.75'/%3E%3Cpath d='M481.14 874.58c-9.068 3.052-26.368 13.802-43 28.156 1.263 34.195 28.961 61.607 63.25 62.5 16.877-32.51 7.06-69.919-20.25-90.656z' fill='%2328170b' opacity='.75'/%3E%3Cpath d='M504.889 862.546c-.472-.032-.932.028-1.375.25-5.6 2.801 0 14 0 14-16.807 14.009-13.236 37.938-32.844 37.938-10.689 0-21.322-12.293-32.531-19.812-.144 1.773-.25 3.564-.25 5.375 0 24.515 13.51 45.863 33.469 57.063 5.583-.703 11.158-2.114 15.344-4.906 21.992-14.662 27.452-42.557 36.438-56.031 5.596-8.407 31.824-7.677 33.594-11.22 2.804-5.601-5.602-14-8.406-14h-22.406c-1.566 0-4.025-2.78-5.594-2.78h-8.406s-3.725-5.65-7.031-5.875z' fill='%23fff'/%3E%3C/g%3E%3C/svg%3E"})
}),
spec: new KameletSpec({ definition: new Definition({ title: 'URI source' }) })
}),
new KameletModel({
kind: 'uri',
apiVersion: '',
metadata: new KameletMetadata({
name: 'uri-sink',
labels: new Labels({ "camel.apache.org/kamelet.type": 'sink' }),
annotations: new Annotations({'camel.apache.org/kamelet.icon': "data:image/svg+xml,%3Csvg viewBox='0 0 130.21 130.01' xmlns='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3ClinearGradient id='a' x1='333.48' x2='477' y1='702.6' y2='563.73' gradientTransform='translate(94.038 276.06) scale(.99206)' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23F69923' offset='0'/%3E%3Cstop stop-color='%23F79A23' offset='.11'/%3E%3Cstop stop-color='%23E97826' offset='.945'/%3E%3C/linearGradient%3E%3ClinearGradient id='b' x1='333.48' x2='477' y1='702.6' y2='563.73' gradientTransform='translate(94.038 276.06) scale(.99206)' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23F69923' offset='0'/%3E%3Cstop stop-color='%23F79A23' offset='.08'/%3E%3Cstop stop-color='%23E97826' offset='.419'/%3E%3C/linearGradient%3E%3ClinearGradient id='c' x1='633.55' x2='566.47' y1='814.6' y2='909.12' gradientTransform='translate(-85.421 56.236)' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23f6e423' offset='0'/%3E%3Cstop stop-color='%23F79A23' offset='.412'/%3E%3Cstop stop-color='%23E97826' offset='.733'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg transform='translate(-437.89 -835.29)'%3E%3Ccircle cx='503.1' cy='900.29' r='62.52' fill='url(%23a)' stroke='url(%23b)' stroke-linejoin='round' stroke-width='4.96'/%3E%3Cpath d='M487.89 873.64a89.53 89.53 0 0 0-2.688.031c-1.043.031-2.445.362-4.062.906 27.309 20.737 37.127 58.146 20.25 90.656.573.015 1.142.063 1.719.063 30.844 0 56.62-21.493 63.28-50.312-19.572-22.943-46.117-41.294-78.5-41.344z' fill='url(%23c)' opacity='.75'/%3E%3Cpath d='M481.14 874.58c-9.068 3.052-26.368 13.802-43 28.156 1.263 34.195 28.961 61.607 63.25 62.5 16.877-32.51 7.06-69.919-20.25-90.656z' fill='%2328170b' opacity='.75'/%3E%3Cpath d='M504.889 862.546c-.472-.032-.932.028-1.375.25-5.6 2.801 0 14 0 14-16.807 14.009-13.236 37.938-32.844 37.938-10.689 0-21.322-12.293-32.531-19.812-.144 1.773-.25 3.564-.25 5.375 0 24.515 13.51 45.863 33.469 57.063 5.583-.703 11.158-2.114 15.344-4.906 21.992-14.662 27.452-42.557 36.438-56.031 5.596-8.407 31.824-7.677 33.594-11.22 2.804-5.601-5.602-14-8.406-14h-22.406c-1.566 0-4.025-2.78-5.594-2.78h-8.406s-3.725-5.65-7.031-5.875z' fill='%23fff'/%3E%3C/g%3E%3C/svg%3E"})
}),
spec: new KameletSpec({ definition: new Definition({ title: 'URI sink' }) })
})
]
// KameletBinding data model
export class Ref {
apiVersion: string = 'camel.apache.org/v1alpha1';
kind: string = 'Kamelet';
name: string = '';
}
export class Source {
uri: string | any;
ref: Ref | any = new Ref();
properties: [] | any;
static createUri(uri: string) {
const source: Source = new Source();
source.uri = uri;
delete source.ref;
delete source.properties;
return source;
}
static createRef(refName: string) {
const source: Source = new Source();
source.ref.name = refName;
delete source.uri;
return source;
}
}
export class Sink {
uri: string | any;
ref: Ref | any = new Ref();
properties: [] | any;
static createUri(uri: string) {
const source: Sink = new Sink();
source.uri = uri;
delete source.ref;
delete source.properties;
return source;
}
static createRef(refName: string) {
const source: Sink = new Sink();
source.ref.name = refName;
delete source.uri;
return source;
}
}
export class Step {
ref: Ref = new Ref();
properties: any;
}
export class KameletBindingSpec {
source: Source = new Source();
steps: Step[] | any = [];
sink: Sink = new Sink();
}
export class KameletBindingAnnotations {
'camel.apache.org/karavan.title': string = '';
}
export class KameletBindingMetadata {
name: string = '';
annotations: KameletBindingAnnotations | any = new KameletBindingAnnotations();
}
export class KameletBinding {
apiVersion: string = 'camel.apache.org/v1alpha1';
kind: string = 'KameletBinding';
metadata: KameletBindingMetadata = new KameletBindingMetadata();
spec: KameletBindingSpec = new KameletBindingSpec();
public constructor(init?: Partial<KameletBinding>) {
Object.assign(this, init);
}
}