This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git


The following commit(s) were added to refs/heads/main by this push:
     new 41d7ddc  Fix #271 (#272)
41d7ddc is described below

commit 41d7ddce368795c017d0f74c38fbbe110bbcf5f2
Author: Marat Gubaidullin <marat.gubaidul...@gmail.com>
AuthorDate: Tue Apr 5 10:48:50 2022 -0400

    Fix #271 (#272)
---
 karavan-core/package-lock.json                     | 1257 +++++++++++++++++++-
 karavan-core/package.json                          |    4 +-
 karavan-core/src/core/api/ComponentApi.ts          |   73 +-
 karavan-core/test/cxf.json                         |  615 ++++++++++
 karavan-core/test/cxf.spec.ts                      |   44 +
 karavan-core/test/cxf.yaml                         |   13 +
 .../route/property/ComponentParameterField.tsx     |    2 +-
 7 files changed, 1974 insertions(+), 34 deletions(-)

diff --git a/karavan-core/package-lock.json b/karavan-core/package-lock.json
index c7b84cc..9db2ccc 100644
--- a/karavan-core/package-lock.json
+++ b/karavan-core/package-lock.json
@@ -1,8 +1,1261 @@
 {
   "name": "karavan-core",
-  "version": "0.0.10",
-  "lockfileVersion": 1,
+  "version": "0.0.14",
+  "lockfileVersion": 2,
   "requires": true,
+  "packages": {
+    "": {
+      "name": "karavan-core",
+      "version": "0.0.14",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@types/js-yaml": "^4.0.5",
+        "@types/uuid": "^8.3.4",
+        "typescript": "^4.5.5",
+        "uuid": "8.3.2"
+      },
+      "devDependencies": {
+        "@types/chai": "^4.3.0",
+        "@types/dagre": "^0.7.47",
+        "@types/localforage": "0.0.34",
+        "@types/mocha": "^9.1.0",
+        "@types/node": "^17.0.23",
+        "chai": "^4.3.4",
+        "fs": "^0.0.1-security",
+        "mocha": "^9.2.0",
+        "ts-node": "^10.4.0"
+      }
+    },
+    "node_modules/@cspotcode/source-map-consumer": {
+      "version": "0.8.0",
+      "resolved": 
"https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz";,
+      "integrity": 
"sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 12"
+      }
+    },
+    "node_modules/@cspotcode/source-map-support": {
+      "version": "0.7.0",
+      "resolved": 
"https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz";,
+      "integrity": 
"sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==",
+      "dev": true,
+      "dependencies": {
+        "@cspotcode/source-map-consumer": "0.8.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@tsconfig/node10": {
+      "version": "1.0.8",
+      "resolved": 
"https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz";,
+      "integrity": 
"sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==",
+      "dev": true
+    },
+    "node_modules/@tsconfig/node12": {
+      "version": "1.0.9",
+      "resolved": 
"https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz";,
+      "integrity": 
"sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==",
+      "dev": true
+    },
+    "node_modules/@tsconfig/node14": {
+      "version": "1.0.1",
+      "resolved": 
"https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz";,
+      "integrity": 
"sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==",
+      "dev": true
+    },
+    "node_modules/@tsconfig/node16": {
+      "version": "1.0.2",
+      "resolved": 
"https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz";,
+      "integrity": 
"sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==",
+      "dev": true
+    },
+    "node_modules/@types/chai": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.0.tgz";,
+      "integrity": 
"sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==",
+      "dev": true
+    },
+    "node_modules/@types/dagre": {
+      "version": "0.7.47",
+      "resolved": "https://registry.npmjs.org/@types/dagre/-/dagre-0.7.47.tgz";,
+      "integrity": 
"sha512-oX+3aRf7L6Cqq1MvbWmmD7FpAU/T8URwFFuHBagAiyHILn3i+RNZ35/tvyq28de+lZGY3W19BxJ7FeITQDO7aA==",
+      "dev": true
+    },
+    "node_modules/@types/js-yaml": {
+      "version": "4.0.5",
+      "resolved": 
"https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz";,
+      "integrity": 
"sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA=="
+    },
+    "node_modules/@types/localforage": {
+      "version": "0.0.34",
+      "resolved": 
"https://registry.npmjs.org/@types/localforage/-/localforage-0.0.34.tgz";,
+      "integrity": "sha1-XjHDLdh5HsS5/z70fJy1Wy0NlDg=",
+      "deprecated": "This is a stub types definition for localforage 
(https://github.com/localForage/localForage). localforage provides its own type 
definitions, so you don't need @types/localforage installed!",
+      "dev": true,
+      "dependencies": {
+        "localforage": "*"
+      }
+    },
+    "node_modules/@types/mocha": {
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz";,
+      "integrity": 
"sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==",
+      "dev": true
+    },
+    "node_modules/@types/node": {
+      "version": "17.0.23",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz";,
+      "integrity": 
"sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==",
+      "dev": true
+    },
+    "node_modules/@types/uuid": {
+      "version": "8.3.4",
+      "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz";,
+      "integrity": 
"sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw=="
+    },
+    "node_modules/@ungap/promise-all-settled": {
+      "version": "1.1.2",
+      "resolved": 
"https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz";,
+      "integrity": 
"sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
+      "dev": true
+    },
+    "node_modules/acorn": {
+      "version": "8.7.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz";,
+      "integrity": 
"sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
+      "dev": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-walk": {
+      "version": "8.2.0",
+      "resolved": 
"https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz";,
+      "integrity": 
"sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/ansi-colors": {
+      "version": "4.1.1",
+      "resolved": 
"https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz";,
+      "integrity": 
"sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": 
"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz";,
+      "integrity": 
"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": 
"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz";,
+      "integrity": 
"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1";
+      }
+    },
+    "node_modules/anymatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz";,
+      "integrity": 
"sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+      "dev": true,
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/arg": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz";,
+      "integrity": 
"sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
+      "dev": true
+    },
+    "node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz";,
+      "integrity": 
"sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "dev": true
+    },
+    "node_modules/assertion-error": {
+      "version": "1.1.0",
+      "resolved": 
"https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz";,
+      "integrity": 
"sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": 
"https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz";,
+      "integrity": 
"sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
+    },
+    "node_modules/binary-extensions": {
+      "version": "2.2.0",
+      "resolved": 
"https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz";,
+      "integrity": 
"sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": 
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";,
+      "integrity": 
"sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz";,
+      "integrity": 
"sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "dev": true,
+      "dependencies": {
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/browser-stdout": {
+      "version": "1.3.1",
+      "resolved": 
"https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz";,
+      "integrity": 
"sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
+      "dev": true
+    },
+    "node_modules/camelcase": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz";,
+      "integrity": 
"sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus";
+      }
+    },
+    "node_modules/chai": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz";,
+      "integrity": 
"sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==",
+      "dev": true,
+      "dependencies": {
+        "assertion-error": "^1.1.0",
+        "check-error": "^1.0.2",
+        "deep-eql": "^3.0.1",
+        "get-func-name": "^2.0.0",
+        "pathval": "^1.1.1",
+        "type-detect": "^4.0.5"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz";,
+      "integrity": 
"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1";
+      }
+    },
+    "node_modules/chalk/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": 
"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz";,
+      "integrity": 
"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/check-error": {
+      "version": "1.0.2",
+      "resolved": 
"https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz";,
+      "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/chokidar": {
+      "version": "3.5.3",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz";,
+      "integrity": 
"sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://paulmillr.com/funding/";
+        }
+      ],
+      "dependencies": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      },
+      "engines": {
+        "node": ">= 8.10.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/cliui": {
+      "version": "7.0.4",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz";,
+      "integrity": 
"sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+      "dev": true,
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^7.0.0"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": 
"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz";,
+      "integrity": 
"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": 
"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz";,
+      "integrity": 
"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": 
"https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";,
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
+    },
+    "node_modules/create-require": {
+      "version": "1.1.1",
+      "resolved": 
"https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz";,
+      "integrity": 
"sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+      "dev": true
+    },
+    "node_modules/debug": {
+      "version": "4.3.3",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz";,
+      "integrity": 
"sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/debug/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";,
+      "integrity": 
"sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "node_modules/decamelize": {
+      "version": "4.0.0",
+      "resolved": 
"https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz";,
+      "integrity": 
"sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus";
+      }
+    },
+    "node_modules/deep-eql": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz";,
+      "integrity": 
"sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
+      "dev": true,
+      "dependencies": {
+        "type-detect": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=0.12"
+      }
+    },
+    "node_modules/diff": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz";,
+      "integrity": 
"sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.3.1"
+      }
+    },
+    "node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": 
"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz";,
+      "integrity": 
"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "dev": true
+    },
+    "node_modules/escalade": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz";,
+      "integrity": 
"sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "4.0.0",
+      "resolved": 
"https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz";,
+      "integrity": 
"sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus";
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "7.0.1",
+      "resolved": 
"https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz";,
+      "integrity": 
"sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "dev": true,
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/find-up": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz";,
+      "integrity": 
"sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^6.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus";
+      }
+    },
+    "node_modules/flat": {
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz";,
+      "integrity": 
"sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
+      "dev": true,
+      "bin": {
+        "flat": "cli.js"
+      }
+    },
+    "node_modules/fs": {
+      "version": "0.0.1-security",
+      "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz";,
+      "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=",
+      "dev": true
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": 
"https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";,
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+      "dev": true
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz";,
+      "integrity": 
"sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/get-caller-file": {
+      "version": "2.0.5",
+      "resolved": 
"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz";,
+      "integrity": 
"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+      "dev": true,
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
+    "node_modules/get-func-name": {
+      "version": "2.0.0",
+      "resolved": 
"https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz";,
+      "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/glob": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz";,
+      "integrity": 
"sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+      "dev": true,
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs";
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": 
"https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz";,
+      "integrity": 
"sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/growl": {
+      "version": "1.10.5",
+      "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz";,
+      "integrity": 
"sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.x"
+      }
+    },
+    "node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz";,
+      "integrity": 
"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/he": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz";,
+      "integrity": 
"sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+      "dev": true,
+      "bin": {
+        "he": "bin/he"
+      }
+    },
+    "node_modules/immediate": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz";,
+      "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=",
+      "dev": true
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";,
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dev": true,
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";,
+      "integrity": 
"sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
+    },
+    "node_modules/is-binary-path": {
+      "version": "2.1.0",
+      "resolved": 
"https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz";,
+      "integrity": 
"sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "dev": true,
+      "dependencies": {
+        "binary-extensions": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": 
"https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz";,
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": 
"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz";,
+      "integrity": 
"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz";,
+      "integrity": 
"sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz";,
+      "integrity": 
"sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/is-plain-obj": {
+      "version": "2.1.0",
+      "resolved": 
"https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz";,
+      "integrity": 
"sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-unicode-supported": {
+      "version": "0.1.0",
+      "resolved": 
"https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz";,
+      "integrity": 
"sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus";
+      }
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz";,
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+      "dev": true
+    },
+    "node_modules/js-yaml": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz";,
+      "integrity": 
"sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+      "dev": true,
+      "dependencies": {
+        "argparse": "^2.0.1"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/lie": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz";,
+      "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=",
+      "dev": true,
+      "dependencies": {
+        "immediate": "~3.0.5"
+      }
+    },
+    "node_modules/localforage": {
+      "version": "1.10.0",
+      "resolved": 
"https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz";,
+      "integrity": 
"sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==",
+      "dev": true,
+      "dependencies": {
+        "lie": "3.1.1"
+      }
+    },
+    "node_modules/locate-path": {
+      "version": "6.0.0",
+      "resolved": 
"https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz";,
+      "integrity": 
"sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+      "dev": true,
+      "dependencies": {
+        "p-locate": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus";
+      }
+    },
+    "node_modules/log-symbols": {
+      "version": "4.1.0",
+      "resolved": 
"https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz";,
+      "integrity": 
"sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^4.1.0",
+        "is-unicode-supported": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus";
+      }
+    },
+    "node_modules/make-error": {
+      "version": "1.3.6",
+      "resolved": 
"https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz";,
+      "integrity": 
"sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+      "dev": true
+    },
+    "node_modules/minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";,
+      "integrity": 
"sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/mocha": {
+      "version": "9.2.0",
+      "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.0.tgz";,
+      "integrity": 
"sha512-kNn7E8g2SzVcq0a77dkphPsDSN7P+iYkqE0ZsGCYWRsoiKjOt+NvXfaagik8vuDa6W5Zw3qxe8Jfpt5qKf+6/Q==",
+      "dev": true,
+      "dependencies": {
+        "@ungap/promise-all-settled": "1.1.2",
+        "ansi-colors": "4.1.1",
+        "browser-stdout": "1.3.1",
+        "chokidar": "3.5.3",
+        "debug": "4.3.3",
+        "diff": "5.0.0",
+        "escape-string-regexp": "4.0.0",
+        "find-up": "5.0.0",
+        "glob": "7.2.0",
+        "growl": "1.10.5",
+        "he": "1.2.0",
+        "js-yaml": "4.1.0",
+        "log-symbols": "4.1.0",
+        "minimatch": "3.0.4",
+        "ms": "2.1.3",
+        "nanoid": "3.2.0",
+        "serialize-javascript": "6.0.0",
+        "strip-json-comments": "3.1.1",
+        "supports-color": "8.1.1",
+        "which": "2.0.2",
+        "workerpool": "6.2.0",
+        "yargs": "16.2.0",
+        "yargs-parser": "20.2.4",
+        "yargs-unparser": "2.0.0"
+      },
+      "bin": {
+        "_mocha": "bin/_mocha",
+        "mocha": "bin/mocha"
+      },
+      "engines": {
+        "node": ">= 12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mochajs";
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz";,
+      "integrity": 
"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+      "dev": true
+    },
+    "node_modules/nanoid": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz";,
+      "integrity": 
"sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==",
+      "dev": true,
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "resolved": 
"https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz";,
+      "integrity": 
"sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz";,
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "dev": true,
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/p-limit": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz";,
+      "integrity": 
"sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+      "dev": true,
+      "dependencies": {
+        "yocto-queue": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus";
+      }
+    },
+    "node_modules/p-locate": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz";,
+      "integrity": 
"sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus";
+      }
+    },
+    "node_modules/path-exists": {
+      "version": "4.0.0",
+      "resolved": 
"https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz";,
+      "integrity": 
"sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": 
"https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";,
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pathval": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz";,
+      "integrity": 
"sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz";,
+      "integrity": 
"sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert";
+      }
+    },
+    "node_modules/randombytes": {
+      "version": "2.1.0",
+      "resolved": 
"https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz";,
+      "integrity": 
"sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+      "dev": true,
+      "dependencies": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "node_modules/readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz";,
+      "integrity": 
"sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "dev": true,
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      }
+    },
+    "node_modules/require-directory": {
+      "version": "2.1.1",
+      "resolved": 
"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz";,
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "resolved": 
"https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz";,
+      "integrity": 
"sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross";
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross";
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support";
+        }
+      ]
+    },
+    "node_modules/serialize-javascript": {
+      "version": "6.0.0",
+      "resolved": 
"https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz";,
+      "integrity": 
"sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
+      "dev": true,
+      "dependencies": {
+        "randombytes": "^2.1.0"
+      }
+    },
+    "node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": 
"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz";,
+      "integrity": 
"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dev": true,
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": 
"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz";,
+      "integrity": 
"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": 
"https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz";,
+      "integrity": 
"sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus";
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "8.1.1",
+      "resolved": 
"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz";,
+      "integrity": 
"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/supports-color?sponsor=1";
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": 
"https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz";,
+      "integrity": 
"sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/ts-node": {
+      "version": "10.4.0",
+      "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz";,
+      "integrity": 
"sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==",
+      "dev": true,
+      "dependencies": {
+        "@cspotcode/source-map-support": "0.7.0",
+        "@tsconfig/node10": "^1.0.7",
+        "@tsconfig/node12": "^1.0.7",
+        "@tsconfig/node14": "^1.0.0",
+        "@tsconfig/node16": "^1.0.2",
+        "acorn": "^8.4.1",
+        "acorn-walk": "^8.1.1",
+        "arg": "^4.1.0",
+        "create-require": "^1.1.0",
+        "diff": "^4.0.1",
+        "make-error": "^1.1.1",
+        "yn": "3.1.1"
+      },
+      "bin": {
+        "ts-node": "dist/bin.js",
+        "ts-node-cwd": "dist/bin-cwd.js",
+        "ts-node-script": "dist/bin-script.js",
+        "ts-node-transpile-only": "dist/bin-transpile.js",
+        "ts-script": "dist/bin-script-deprecated.js"
+      },
+      "peerDependencies": {
+        "@swc/core": ">=1.2.50",
+        "@swc/wasm": ">=1.2.50",
+        "@types/node": "*",
+        "typescript": ">=2.7"
+      },
+      "peerDependenciesMeta": {
+        "@swc/core": {
+          "optional": true
+        },
+        "@swc/wasm": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/ts-node/node_modules/diff": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz";,
+      "integrity": 
"sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.3.1"
+      }
+    },
+    "node_modules/type-detect": {
+      "version": "4.0.8",
+      "resolved": 
"https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz";,
+      "integrity": 
"sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/typescript": {
+      "version": "4.5.5",
+      "resolved": 
"https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz";,
+      "integrity": 
"sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==",
+      "bin": {
+        "tsc": "bin/tsc",
+        "tsserver": "bin/tsserver"
+      },
+      "engines": {
+        "node": ">=4.2.0"
+      }
+    },
+    "node_modules/uuid": {
+      "version": "8.3.2",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz";,
+      "integrity": 
"sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+      "bin": {
+        "uuid": "dist/bin/uuid"
+      }
+    },
+    "node_modules/which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz";,
+      "integrity": 
"sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "dev": true,
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/workerpool": {
+      "version": "6.2.0",
+      "resolved": 
"https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz";,
+      "integrity": 
"sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
+      "dev": true
+    },
+    "node_modules/wrap-ansi": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz";,
+      "integrity": 
"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/wrap-ansi?sponsor=1";
+      }
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";,
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+      "dev": true
+    },
+    "node_modules/y18n": {
+      "version": "5.0.8",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz";,
+      "integrity": 
"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yargs": {
+      "version": "16.2.0",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz";,
+      "integrity": 
"sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+      "dev": true,
+      "dependencies": {
+        "cliui": "^7.0.2",
+        "escalade": "^3.1.1",
+        "get-caller-file": "^2.0.5",
+        "require-directory": "^2.1.1",
+        "string-width": "^4.2.0",
+        "y18n": "^5.0.5",
+        "yargs-parser": "^20.2.2"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "20.2.4",
+      "resolved": 
"https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz";,
+      "integrity": 
"sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yargs-unparser": {
+      "version": "2.0.0",
+      "resolved": 
"https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz";,
+      "integrity": 
"sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
+      "dev": true,
+      "dependencies": {
+        "camelcase": "^6.0.0",
+        "decamelize": "^4.0.0",
+        "flat": "^5.0.2",
+        "is-plain-obj": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yn": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz";,
+      "integrity": 
"sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/yocto-queue": {
+      "version": "0.1.0",
+      "resolved": 
"https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz";,
+      "integrity": 
"sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus";
+      }
+    }
+  },
   "dependencies": {
     "@cspotcode/source-map-consumer": {
       "version": "0.8.0",
diff --git a/karavan-core/package.json b/karavan-core/package.json
index e183e11..f6e00f2 100644
--- a/karavan-core/package.json
+++ b/karavan-core/package.json
@@ -1,8 +1,8 @@
 {
   "name": "karavan-core",
   "publisher": "camel-karavan",
-  "version": "0.0.10",
-  "description": "Apache Camel Karavan Designer Core",
+  "version": "0.0.14",
+  "description": "Apache Camel Karavan Core",
   "scripts": {
     "build": "tsc",
     "test": "TS_NODE_PROJECT=\"test/tsconfig.testing.json\" mocha -r 
ts-node/register test/**/*.spec.ts",
diff --git a/karavan-core/src/core/api/ComponentApi.ts 
b/karavan-core/src/core/api/ComponentApi.ts
index 6a1781c..269a1a7 100644
--- a/karavan-core/src/core/api/ComponentApi.ts
+++ b/karavan-core/src/core/api/ComponentApi.ts
@@ -55,7 +55,7 @@ export const ComponentApi = {
     },
 
     getComponentTitleFromUri: (uri: string): string | undefined => {
-        const componentName =  uri.split(":")[0];
+        const componentName = uri.split(":")[0];
         const title = ComponentApi.findByName(componentName)?.component.title;
         return title ? title : componentName;
     },
@@ -66,28 +66,37 @@ export const ComponentApi = {
         if (name) {
             const component = ComponentApi.findByName(name);
             const syntax = component?.component.syntax;
-            const syntaxParts = ComponentApi.parseSyntax(syntax+'');
-            const syntaxSeparators = 
ComponentApi.getSyntaxSeparators(syntax+'');
-            let newUri = uri === name ? name+syntaxSeparators.join('') : uri;
+            const syntaxParts = ComponentApi.parseSyntax(syntax + '');
+            const syntaxSeparators = ComponentApi.getSyntaxSeparators(syntax + 
'');
+            let newUri = uri === name ? name + syntaxSeparators.join('') : uri;
             result.set(name, name);
-            syntaxParts.filter((x,i) => i > 0).forEach((part, index) => {
-                if (index < syntaxParts.length -1) {
-                    const startSeparator = syntaxSeparators[index];
-                    const endSeparator = syntaxSeparators[index + 1];
-                    const start = newUri.indexOf(startSeparator) + 
startSeparator.length;
-                    const end = endSeparator ? newUri.indexOf(endSeparator, 
start) : newUri.length;
-                    const val = newUri.substr(start, end-start);
-                    result.set(part, val);
-                    newUri = newUri.substr(end);
-                }
-            })
+            // workaround for CXF component start
+            if (name === 'cxf') {
+                const cxfParts = newUri.split(":");
+                const firstPart = cxfParts.at(1);
+                const secondPart = cxfParts.at(2);
+                if (cxfParts.length === 3 && firstPart === 'bean' && 
secondPart) result.set("beanId", firstPart + ":" + secondPart);
+                if (cxfParts.length === 2 && firstPart?.startsWith("//")) 
result.set("address", firstPart);
+            } else { // workaround for CXF component end
+                syntaxParts.filter((x, i) => i > 0).forEach((part, index) => {
+                    if (index < syntaxParts.length - 1) {
+                        const startSeparator = syntaxSeparators[index];
+                        const endSeparator = syntaxSeparators[index + 1];
+                        const start = newUri.indexOf(startSeparator) + 
startSeparator.length;
+                        const end = endSeparator ? 
newUri.indexOf(endSeparator, start) : newUri.length;
+                        const val = newUri.substr(start, end - start);
+                        result.set(part, val);
+                        newUri = newUri.substr(end);
+                    }
+                })
+            }
         }
         return result;
     },
 
     parseSyntax: (syntax: string): string[] => {
         const separators: string[] = ['://', '//', ':', '/', '#']
-        let simplifiedSyntax = ''+ syntax;
+        let simplifiedSyntax = '' + syntax;
         separators.forEach(s => {
             simplifiedSyntax = simplifiedSyntax?.replaceAll(s, ":");
         });
@@ -99,7 +108,7 @@ export const ComponentApi = {
         const parts: string[] = ComponentApi.parseSyntax(syntax);
         let str = '';
         parts.forEach((part, index) => {
-            if (index < parts.length -1){
+            if (index < parts.length - 1) {
                 const start = syntax.indexOf(part, str.length) + part.length;
                 const end = syntax.indexOf(parts[index + 1], start);
                 const separator = syntax.substr(start, end - start);
@@ -112,7 +121,7 @@ export const ComponentApi = {
 
     parseUri: (uri?: string): string[] => {
         const separators: string[] = ['://', '//', ':', '/', '#']
-        let simplifiedUri = ''+ uri;
+        let simplifiedUri = '' + uri;
         separators.forEach(s => {
             simplifiedUri = simplifiedUri?.replaceAll(s, ":");
         });
@@ -128,7 +137,7 @@ export const ComponentApi = {
             const parts: string[] = 
Array.from(ComponentApi.getUriParts(uri).keys());
             let str = '';
             parts.forEach((part, index) => {
-                if (index < parts.length -1){
+                if (index < parts.length - 1) {
                     const start = syntax.indexOf(part, str.length) + 
part.length;
                     const end = syntax.indexOf(parts[index + 1], start);
                     const separator = syntax.substr(start, end - start);
@@ -147,16 +156,22 @@ export const ComponentApi = {
     buildComponentUri: (uri: string, pathParameter: string, 
pathParameterValue: string): string | undefined => {
         const name = ComponentApi.getComponentNameFromUri(uri);
         if (name) {
-            const map = ComponentApi.getUriParts(uri);
-            map.set(pathParameter, pathParameterValue);
-            const separators = ComponentApi.getUriSeparators(uri);
-            const result: string[] = [];
-            Array.from(map.keys()).forEach((key, index) => {
-                const val = map.get(key);
-                result.push(val ? val : '');
-                result.push(separators[index]);
-            });
-            return result.join('');
+            // workaround for CXF component start
+            if (name === 'cxf') {
+                if (pathParameter === 'beanId' && pathParameterValue && 
pathParameterValue.trim().length > 0) return "cxf:" + pathParameterValue;
+                if (pathParameter === 'address' && pathParameterValue && 
pathParameterValue.trim().length > 0) return "cxf:" + pathParameterValue;
+            } else { // workaround for CXF component end
+                const map = ComponentApi.getUriParts(uri);
+                map.set(pathParameter, pathParameterValue);
+                const separators = ComponentApi.getUriSeparators(uri);
+                const result: string[] = [];
+                Array.from(map.keys()).forEach((key, index) => {
+                    const val = map.get(key);
+                    result.push(val ? val : '');
+                    result.push(separators[index]);
+                });
+                return result.join('');
+            }
         }
         return uri;
     },
diff --git a/karavan-core/test/cxf.json b/karavan-core/test/cxf.json
new file mode 100644
index 0000000..85e8696
--- /dev/null
+++ b/karavan-core/test/cxf.json
@@ -0,0 +1,615 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "cxf",
+    "title": "CXF",
+    "description": "Expose SOAP WebServices using Apache CXF or connect to 
external WebServices using CXF WS client.",
+    "deprecated": false,
+    "firstVersion": "1.0.0",
+    "label": "soap,webservice",
+    "javaType": "org.apache.camel.component.cxf.CxfComponent",
+    "supportLevel": "Stable",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-cxf",
+    "version": "3.16.0",
+    "scheme": "cxf",
+    "extendsScheme": "",
+    "syntax": "cxf:beanId:address",
+    "async": true,
+    "api": false,
+    "consumerOnly": false,
+    "producerOnly": false,
+    "lenientProperties": false
+  },
+  "headers": {
+    "operationName": {
+      "kind": "header",
+      "displayName": "",
+      "group": "common",
+      "label": "",
+      "required": false,
+      "javaType": "String",
+      "deprecated": false,
+      "deprecationNote": "",
+      "autowired": false,
+      "secret": false,
+      "description": "The name of the operation."
+    },
+    "operationNamespace": {
+      "kind": "header",
+      "displayName": "",
+      "group": "common",
+      "label": "",
+      "required": false,
+      "javaType": "String",
+      "deprecated": false,
+      "deprecationNote": "",
+      "autowired": false,
+      "secret": false,
+      "description": "The operation namespace."
+    },
+    "CamelDestinationOverrideUrl": {
+      "kind": "header",
+      "displayName": "",
+      "group": "common",
+      "label": "",
+      "required": false,
+      "javaType": "String",
+      "deprecated": false,
+      "deprecationNote": "",
+      "autowired": false,
+      "secret": false,
+      "description": "The destination override url"
+    },
+    "ResponseContext": {
+      "kind": "header",
+      "displayName": "",
+      "group": "common",
+      "label": "",
+      "required": false,
+      "javaType": "Map<String, Object>",
+      "deprecated": false,
+      "deprecationNote": "",
+      "autowired": false,
+      "secret": false,
+      "description": "The response context"
+    },
+    "CamelAuthentication": {
+      "kind": "header",
+      "displayName": "",
+      "group": "common",
+      "label": "",
+      "required": false,
+      "javaType": "javax.security.auth.Subject",
+      "deprecated": false,
+      "deprecationNote": "",
+      "autowired": false,
+      "secret": false,
+      "description": "The authentication"
+    },
+    "RequestContext": {
+      "kind": "header",
+      "displayName": "",
+      "group": "common",
+      "label": "",
+      "required": false,
+      "javaType": "Object",
+      "deprecated": false,
+      "deprecationNote": "",
+      "autowired": false,
+      "secret": false,
+      "description": "The request context"
+    }
+  },
+  "properties": {
+    "beanId": {
+      "kind": "path",
+      "displayName": "Bean Id",
+      "group": "common",
+      "label": "",
+      "required": false,
+      "type": "string",
+      "javaType": "java.lang.String",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "To lookup an existing configured CxfEndpoint. Must used 
bean: as prefix."
+    },
+    "address": {
+      "kind": "path",
+      "displayName": "Address",
+      "group": "service",
+      "label": "service",
+      "required": false,
+      "type": "string",
+      "javaType": "java.lang.String",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "The service publish address."
+    },
+    "dataFormat": {
+      "kind": "parameter",
+      "displayName": "Data Format",
+      "group": "common",
+      "label": "",
+      "required": false,
+      "type": "object",
+      "javaType": "org.apache.camel.component.cxf.DataFormat",
+      "enum": [
+        "PAYLOAD",
+        "RAW",
+        "MESSAGE",
+        "CXF_MESSAGE",
+        "POJO"
+      ],
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "defaultValue": "POJO",
+      "description": "The data type messages supported by the CXF endpoint."
+    },
+    "wrappedStyle": {
+      "kind": "parameter",
+      "displayName": "Wrapped Style",
+      "group": "common",
+      "label": "",
+      "required": false,
+      "type": "boolean",
+      "javaType": "java.lang.Boolean",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "The WSDL style that describes how parameters are 
represented in the SOAP body. If the value is false, CXF will chose the 
document-literal unwrapped style, If the value is true, CXF will chose the 
document-literal wrapped style"
+    },
+    "bridgeErrorHandler": {
+      "kind": "parameter",
+      "displayName": "Bridge Error Handler",
+      "group": "consumer",
+      "label": "consumer",
+      "required": false,
+      "type": "boolean",
+      "javaType": "boolean",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "defaultValue": false,
+      "description": "Allows for bridging the consumer to the Camel routing 
Error Handler, which mean any exceptions occurred while the consumer is trying 
to pickup incoming messages, or the likes, will now be processed as a message 
and handled by the routing Error Handler. By default the consumer will use the 
org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be 
logged at WARN or ERROR level and ignored."
+    },
+    "exceptionHandler": {
+      "kind": "parameter",
+      "displayName": "Exception Handler",
+      "group": "consumer (advanced)",
+      "label": "consumer,advanced",
+      "required": false,
+      "type": "object",
+      "javaType": "org.apache.camel.spi.ExceptionHandler",
+      "optionalPrefix": "consumer.",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "To let the consumer use a custom ExceptionHandler. 
Notice if the option bridgeErrorHandler is enabled then this option is not in 
use. By default the consumer will deal with exceptions, that will be logged at 
WARN or ERROR level and ignored."
+    },
+    "exchangePattern": {
+      "kind": "parameter",
+      "displayName": "Exchange Pattern",
+      "group": "consumer (advanced)",
+      "label": "consumer,advanced",
+      "required": false,
+      "type": "object",
+      "javaType": "org.apache.camel.ExchangePattern",
+      "enum": [
+        "InOnly",
+        "InOut",
+        "InOptionalOut"
+      ],
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "Sets the exchange pattern when the consumer creates an 
exchange."
+    },
+    "cookieHandler": {
+      "kind": "parameter",
+      "displayName": "Cookie Handler",
+      "group": "producer",
+      "label": "producer",
+      "required": false,
+      "type": "object",
+      "javaType": "org.apache.camel.http.base.cookie.CookieHandler",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "Configure a cookie handler to maintain a HTTP session"
+    },
+    "defaultOperationName": {
+      "kind": "parameter",
+      "displayName": "Default Operation Name",
+      "group": "producer",
+      "label": "producer",
+      "required": false,
+      "type": "string",
+      "javaType": "java.lang.String",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "This option will set the default operationName that will 
be used by the CxfProducer which invokes the remote service."
+    },
+    "defaultOperationNamespace": {
+      "kind": "parameter",
+      "displayName": "Default Operation Namespace",
+      "group": "producer",
+      "label": "producer",
+      "required": false,
+      "type": "string",
+      "javaType": "java.lang.String",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "This option will set the default operationNamespace that 
will be used by the CxfProducer which invokes the remote service."
+    },
+    "hostnameVerifier": {
+      "kind": "parameter",
+      "displayName": "Hostname Verifier",
+      "group": "producer",
+      "label": "producer",
+      "required": false,
+      "type": "object",
+      "javaType": "javax.net.ssl.HostnameVerifier",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "The hostname verifier to be used. Use the # notation to 
reference a HostnameVerifier from the registry."
+    },
+    "lazyStartProducer": {
+      "kind": "parameter",
+      "displayName": "Lazy Start Producer",
+      "group": "producer",
+      "label": "producer",
+      "required": false,
+      "type": "boolean",
+      "javaType": "boolean",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "defaultValue": false,
+      "description": "Whether the producer should be started lazy (on the 
first message). By starting lazy you can use this to allow CamelContext and 
routes to startup in situations where a producer may otherwise fail during 
starting and cause the route to fail being started. By deferring this startup 
to be lazy then the startup failure can be handled during routing messages via 
Camel's routing error handlers. Beware that when the first message is processed 
then creating and starting the [...]
+    },
+    "sslContextParameters": {
+      "kind": "parameter",
+      "displayName": "Ssl Context Parameters",
+      "group": "producer",
+      "label": "producer",
+      "required": false,
+      "type": "object",
+      "javaType": "org.apache.camel.support.jsse.SSLContextParameters",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "The Camel SSL setting reference. Use the # notation to 
reference the SSL Context."
+    },
+    "wrapped": {
+      "kind": "parameter",
+      "displayName": "Wrapped",
+      "group": "producer",
+      "label": "producer",
+      "required": false,
+      "type": "boolean",
+      "javaType": "boolean",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "defaultValue": false,
+      "description": "Which kind of operation that CXF endpoint producer will 
invoke"
+    },
+    "synchronous": {
+      "kind": "parameter",
+      "displayName": "Synchronous",
+      "group": "producer (advanced)",
+      "label": "producer,advanced",
+      "required": false,
+      "type": "boolean",
+      "javaType": "boolean",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "defaultValue": false,
+      "description": "Sets whether synchronous processing should be strictly 
used"
+    },
+    "allowStreaming": {
+      "kind": "parameter",
+      "displayName": "Allow Streaming",
+      "group": "advanced",
+      "label": "advanced",
+      "required": false,
+      "type": "boolean",
+      "javaType": "java.lang.Boolean",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "This option controls whether the CXF component, when 
running in PAYLOAD mode, will DOM parse the incoming messages into DOM Elements 
or keep the payload as a javax.xml.transform.Source object that would allow 
streaming in some cases."
+    },
+    "bus": {
+      "kind": "parameter",
+      "displayName": "Bus",
+      "group": "advanced",
+      "label": "advanced",
+      "required": false,
+      "type": "object",
+      "javaType": "org.apache.cxf.Bus",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "To use a custom configured CXF Bus."
+    },
+    "continuationTimeout": {
+      "kind": "parameter",
+      "displayName": "Continuation Timeout",
+      "group": "advanced",
+      "label": "advanced",
+      "required": false,
+      "type": "duration",
+      "javaType": "long",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "defaultValue": "30000",
+      "description": "This option is used to set the CXF continuation timeout 
which could be used in CxfConsumer by default when the CXF server is using 
Jetty or Servlet transport."
+    },
+    "cxfBinding": {
+      "kind": "parameter",
+      "displayName": "Cxf Binding",
+      "group": "advanced",
+      "label": "advanced",
+      "required": false,
+      "type": "object",
+      "javaType": "org.apache.camel.component.cxf.CxfBinding",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "To use a custom CxfBinding to control the binding 
between Camel Message and CXF Message."
+    },
+    "cxfConfigurer": {
+      "kind": "parameter",
+      "displayName": "Cxf Configurer",
+      "group": "advanced",
+      "label": "advanced",
+      "required": false,
+      "type": "object",
+      "javaType": "org.apache.camel.component.cxf.CxfConfigurer",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "This option could apply the implementation of 
org.apache.camel.component.cxf.CxfEndpointConfigurer which supports to 
configure the CXF endpoint in programmatic way. User can configure the CXF 
server and client by implementing configure{ServerClient} method of 
CxfEndpointConfigurer."
+    },
+    "defaultBus": {
+      "kind": "parameter",
+      "displayName": "Default Bus",
+      "group": "advanced",
+      "label": "advanced",
+      "required": false,
+      "type": "boolean",
+      "javaType": "boolean",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "defaultValue": false,
+      "description": "Will set the default bus when CXF endpoint create a bus 
by itself"
+    },
+    "headerFilterStrategy": {
+      "kind": "parameter",
+      "displayName": "Header Filter Strategy",
+      "group": "advanced",
+      "label": "advanced",
+      "required": false,
+      "type": "object",
+      "javaType": "org.apache.camel.spi.HeaderFilterStrategy",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "To use a custom HeaderFilterStrategy to filter header to 
and from Camel message."
+    },
+    "mergeProtocolHeaders": {
+      "kind": "parameter",
+      "displayName": "Merge Protocol Headers",
+      "group": "advanced",
+      "label": "advanced",
+      "required": false,
+      "type": "boolean",
+      "javaType": "boolean",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "defaultValue": false,
+      "description": "Whether to merge protocol headers. If enabled then 
propagating headers between Camel and CXF becomes more consistent and similar. 
For more details see CAMEL-6393."
+    },
+    "mtomEnabled": {
+      "kind": "parameter",
+      "displayName": "Mtom Enabled",
+      "group": "advanced",
+      "label": "advanced",
+      "required": false,
+      "type": "boolean",
+      "javaType": "boolean",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "defaultValue": false,
+      "description": "To enable MTOM (attachments). This requires to use POJO 
or PAYLOAD data format mode."
+    },
+    "properties": {
+      "kind": "parameter",
+      "displayName": "Properties",
+      "group": "advanced",
+      "label": "advanced",
+      "required": false,
+      "type": "object",
+      "javaType": "java.util.Map<java.lang.String, java.lang.Object>",
+      "prefix": "properties.",
+      "multiValue": true,
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "To set additional CXF options using the key/value pairs 
from the Map. For example to turn on stacktraces in SOAP faults, 
properties.faultStackTraceEnabled=true"
+    },
+    "skipPayloadMessagePartCheck": {
+      "kind": "parameter",
+      "displayName": "Skip Payload Message Part Check",
+      "group": "advanced",
+      "label": "advanced",
+      "required": false,
+      "type": "boolean",
+      "javaType": "boolean",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "defaultValue": false,
+      "description": "Sets whether SOAP message validation should be disabled."
+    },
+    "loggingFeatureEnabled": {
+      "kind": "parameter",
+      "displayName": "Logging Feature Enabled",
+      "group": "logging",
+      "label": "logging",
+      "required": false,
+      "type": "boolean",
+      "javaType": "boolean",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "defaultValue": false,
+      "description": "This option enables CXF Logging Feature which writes 
inbound and outbound SOAP messages to log."
+    },
+    "loggingSizeLimit": {
+      "kind": "parameter",
+      "displayName": "Logging Size Limit",
+      "group": "logging",
+      "label": "logging",
+      "required": false,
+      "type": "integer",
+      "javaType": "int",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "defaultValue": 49152,
+      "description": "To limit the total size of number of bytes the logger 
will output when logging feature has been enabled and -1 for no limit."
+    },
+    "skipFaultLogging": {
+      "kind": "parameter",
+      "displayName": "Skip Fault Logging",
+      "group": "logging",
+      "label": "logging",
+      "required": false,
+      "type": "boolean",
+      "javaType": "boolean",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "defaultValue": false,
+      "description": "This option controls whether the PhaseInterceptorChain 
skips logging the Fault that it catches."
+    },
+    "password": {
+      "kind": "parameter",
+      "displayName": "Password",
+      "group": "security",
+      "label": "security",
+      "required": false,
+      "type": "string",
+      "javaType": "java.lang.String",
+      "deprecated": false,
+      "autowired": false,
+      "secret": true,
+      "description": "This option is used to set the basic authentication 
information of password for the CXF client."
+    },
+    "username": {
+      "kind": "parameter",
+      "displayName": "Username",
+      "group": "security",
+      "label": "security",
+      "required": false,
+      "type": "string",
+      "javaType": "java.lang.String",
+      "deprecated": false,
+      "autowired": false,
+      "secret": true,
+      "description": "This option is used to set the basic authentication 
information of username for the CXF client."
+    },
+    "bindingId": {
+      "kind": "parameter",
+      "displayName": "Binding Id",
+      "group": "service",
+      "label": "service",
+      "required": false,
+      "type": "string",
+      "javaType": "java.lang.String",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "The bindingId for the service model to use."
+    },
+    "portName": {
+      "kind": "parameter",
+      "displayName": "Port Name",
+      "group": "service",
+      "label": "service",
+      "required": false,
+      "type": "string",
+      "javaType": "java.lang.String",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "The endpoint name this service is implementing, it maps 
to the wsdl:portname. In the format of ns:PORT_NAME where ns is a namespace 
prefix valid at this scope."
+    },
+    "publishedEndpointUrl": {
+      "kind": "parameter",
+      "displayName": "Published Endpoint Url",
+      "group": "service",
+      "label": "service",
+      "required": false,
+      "type": "string",
+      "javaType": "java.lang.String",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "This option can override the endpointUrl that published 
from the WSDL which can be accessed with service address url plus wsd"
+    },
+    "serviceClass": {
+      "kind": "parameter",
+      "displayName": "Service Class",
+      "group": "service",
+      "label": "service",
+      "required": false,
+      "type": "string",
+      "javaType": "java.lang.Class<java.lang.Object>",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "The class name of the SEI (Service Endpoint Interface) 
class which could have JSR181 annotation or not."
+    },
+    "serviceName": {
+      "kind": "parameter",
+      "displayName": "Service Name",
+      "group": "service",
+      "label": "service",
+      "required": false,
+      "type": "string",
+      "javaType": "java.lang.String",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "The service name this service is implementing, it maps 
to the wsdl:servicename."
+    },
+    "wsdlURL": {
+      "kind": "parameter",
+      "displayName": "Wsdl URL",
+      "group": "service",
+      "label": "service",
+      "required": false,
+      "type": "string",
+      "javaType": "java.lang.String",
+      "deprecated": false,
+      "autowired": false,
+      "secret": false,
+      "description": "The location of the WSDL. Can be on the classpath, file 
system, or be hosted remotely."
+    }
+  }
+}
\ No newline at end of file
diff --git a/karavan-core/test/cxf.spec.ts b/karavan-core/test/cxf.spec.ts
new file mode 100644
index 0000000..384b95c
--- /dev/null
+++ b/karavan-core/test/cxf.spec.ts
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+import {expect} from 'chai';
+import 'mocha';
+import {
+    FromDefinition
+} from "../src/core/model/CamelDefinition";
+import {CamelDefinitionApiExt} from "../src/core/api/CamelDefinitionApiExt";
+import {CamelDefinitionYaml} from "../src/core/api/CamelDefinitionYaml";
+import * as fs from 'fs';
+import {ComponentApi} from "../src/core/api/ComponentApi";
+
+describe('CXF Component', () => {
+
+    it('Parse URI', () => {
+        const json = fs.readFileSync('test/cxf.json', {encoding: 'utf8', flag: 
'r'});
+        ComponentApi.saveComponent(json);
+
+        const yaml = fs.readFileSync('test/cxf.yaml', {encoding: 'utf8', flag: 
'r'});
+        const i1 = CamelDefinitionYaml.yamlToIntegration("test1.yaml", yaml);
+
+        const from: FromDefinition = i1.spec.flows?.[0].from;
+        const to = from.steps[0]
+        expect(CamelDefinitionApiExt.getParametersValue(from, 'beanId', 
true)).to.equal(undefined);
+        expect(CamelDefinitionApiExt.getParametersValue(from, 'address', 
true)).to.equal("//{{output.url}}");
+        expect(CamelDefinitionApiExt.getParametersValue(to, 'beanId', 
true)).to.equal("bean:beanName");
+        expect(CamelDefinitionApiExt.getParametersValue(to, 'address', 
true)).to.equal(undefined);
+    });
+
+});
\ No newline at end of file
diff --git a/karavan-core/test/cxf.yaml b/karavan-core/test/cxf.yaml
new file mode 100644
index 0000000..2150268
--- /dev/null
+++ b/karavan-core/test/cxf.yaml
@@ -0,0 +1,13 @@
+- route:
+    id: exampleRoute
+    from:
+      uri: cxf://{{output.url}}
+      parameters:
+        wsdlURL: '{{input.wsdl}}'
+        dataFormat: PAYLOAD
+      steps:
+        - to:
+            uri: cxf:bean:beanName
+            parameters:
+              wsdlURL: '{{output.wsdl}}'
+              dataFormat: PAYLOAD
diff --git 
a/karavan-designer/src/designer/route/property/ComponentParameterField.tsx 
b/karavan-designer/src/designer/route/property/ComponentParameterField.tsx
index 982e8c9..6253b83 100644
--- a/karavan-designer/src/designer/route/property/ComponentParameterField.tsx
+++ b/karavan-designer/src/designer/route/property/ComponentParameterField.tsx
@@ -201,7 +201,7 @@ export class ComponentParameterField extends 
React.Component<Props, State> {
                 key={id}
                 label={property.displayName}
                 fieldId={id}
-                isRequired={property.kind === 'path' || property.required}
+                isRequired={property.required}
                 labelIcon={
                     <Popover
                         position={"left"}

Reply via email to