UNPKG

karavan-core

Version:
224 lines (190 loc) 10.4 kB
/* * 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 = ''; enum?: string[]; } 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': "sink" | "source" | "action" = 'source'; 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 = ''; 'camel.apache.org/kamelet.support.level': 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; } description(): string { return this.spec.definition.description; } 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); } }