diff --git a/.ci/incubator-kie-tools-ci-build.Dockerfile b/.ci/incubator-kie-tools-ci-build.Dockerfile index 8662250f5cf..588fe32eb9b 100644 --- a/.ci/incubator-kie-tools-ci-build.Dockerfile +++ b/.ci/incubator-kie-tools-ci-build.Dockerfile @@ -28,6 +28,7 @@ libglvnd0 \ libbtrfs-dev \ libgpgme-dev \ libdevmapper-dev \ +libxml2-utils \ python3 \ python3-pip \ python3-dev \ @@ -43,6 +44,7 @@ unzip \ bzip2 \ xvfb \ fluxbox \ +rsync \ subversion && \ apt-get clean autoclean && apt-get autoremove --yes && \ rm -rf /var/lib/{apt,cache,log}/ diff --git a/.ci/jenkins/Jenkinsfile.daily-dev-publish b/.ci/jenkins/Jenkinsfile.daily-dev-publish index 56fd21e0c92..790abf92d55 100644 --- a/.ci/jenkins/Jenkinsfile.daily-dev-publish +++ b/.ci/jenkins/Jenkinsfile.daily-dev-publish @@ -596,17 +596,13 @@ pipeline { steps { dir('kie-tools') { script { - withCredentials([usernamePassword(credentialsId: "${pipelineVars.mavenDeploySnapshotsCredentialsId}", usernameVariable: 'REPOSITORY_USER', passwordVariable: 'REPOSITORY_TOKEN')]) { - configFileProvider([configFile(fileId: "${pipelineVars.mavenSettingsConfigFileId}", variable: 'MAVEN_SETTINGS_FILE')]) { - sh """#!/bin/bash -el - export KIE_TOOLS_BUILD__mavenDeploySkip=false - pnpm -F jbpm-quarkus-devui... -F sonataflow-quarkus-devui... exec 'bash' '-c' 'echo -e "\n--settings=${MAVEN_SETTINGS_FILE}" >> .mvn/maven.config' - pnpm -F jbpm-quarkus-devui... -F sonataflow-quarkus-devui... exec 'bash' '-c' 'echo -Dapache.repository.username=${REPOSITORY_USER} >> .mvn/maven.config' - pnpm -F jbpm-quarkus-devui... -F sonataflow-quarkus-devui... exec 'bash' '-c' 'echo -Dapache.repository.password=${REPOSITORY_TOKEN} >> .mvn/maven.config' - pnpm -F jbpm-quarkus-devui... -F sonataflow-quarkus-devui... exec 'bash' '-c' 'echo -Drevision=999-SNAPSHOT >> .mvn/maven.config' - pnpm -F jbpm-quarkus-devui... -F sonataflow-quarkus-devui... build:prod - """.trim() - } + configFileProvider([configFile(fileId: "${pipelineVars.mavenSettingsNightlyConfigFileId}", variable: 'MAVEN_SETTINGS_FILE')]) { + sh """#!/bin/bash -el + export KIE_TOOLS_BUILD__mavenDeploySkip=false + pnpm -F jbpm-quarkus-devui... -F sonataflow-quarkus-devui... exec 'bash' '-c' 'echo -e "\n--settings=${MAVEN_SETTINGS_FILE}" >> .mvn/maven.config' + pnpm -F jbpm-quarkus-devui... -F sonataflow-quarkus-devui... exec 'bash' '-c' 'echo -Drevision=999-SNAPSHOT >> .mvn/maven.config' + pnpm -F jbpm-quarkus-devui... -F sonataflow-quarkus-devui... build:prod + """.trim() } } } diff --git a/.ci/jenkins/Jenkinsfile.release-candidate b/.ci/jenkins/Jenkinsfile.release-candidate index d095223c448..ba257ca676c 100644 --- a/.ci/jenkins/Jenkinsfile.release-candidate +++ b/.ci/jenkins/Jenkinsfile.release-candidate @@ -72,7 +72,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/Jenkinsfile.weekly-publish b/.ci/jenkins/Jenkinsfile.weekly-publish index 5dd76e76907..c6da5f6d37f 100644 --- a/.ci/jenkins/Jenkinsfile.weekly-publish +++ b/.ci/jenkins/Jenkinsfile.weekly-publish @@ -115,17 +115,13 @@ pipeline { steps { dir('kie-tools') { script { - withCredentials([usernamePassword(credentialsId: "${pipelineVars.mavenDeploySnapshotsCredentialsId}", usernameVariable: 'REPOSITORY_USER', passwordVariable: 'REPOSITORY_TOKEN')]) { - configFileProvider([configFile(fileId: "${pipelineVars.mavenSettingsConfigFileId}", variable: 'MAVEN_SETTINGS_FILE')]) { - timestampedSnapshotVersion = getTimestampedSnapshotVersion() - sh """#!/bin/bash -el - pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -e "\n--settings=${MAVEN_SETTINGS_FILE}" >> .mvn/maven.config' - pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -Dapache.repository.username=${REPOSITORY_USER} >> .mvn/maven.config' - pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -Dapache.repository.password=${REPOSITORY_TOKEN} >> .mvn/maven.config' - pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -Drevision=${timestampedSnapshotVersion} >> .mvn/maven.config' - pnpm ${env.PNPM_FILTER_STRING} build:prod - """.trim() - } + configFileProvider([configFile(fileId: "${pipelineVars.mavenSettingsNightlyConfigFileId}", variable: 'MAVEN_SETTINGS_FILE')]) { + timestampedSnapshotVersion = getTimestampedSnapshotVersion() + sh """#!/bin/bash -el + pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -e "\n--settings=${MAVEN_SETTINGS_FILE}" >> .mvn/maven.config' + pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -Drevision=${timestampedSnapshotVersion} >> .mvn/maven.config' + pnpm ${env.PNPM_FILTER_STRING} build:prod + """.trim() } } } diff --git a/.ci/jenkins/ci-jobs/Jenkinsfile.ci-check-dependencies b/.ci/jenkins/ci-jobs/Jenkinsfile.ci-check-dependencies index 384a5ba3841..1846c73a11e 100644 --- a/.ci/jenkins/ci-jobs/Jenkinsfile.ci-check-dependencies +++ b/.ci/jenkins/ci-jobs/Jenkinsfile.ci-check-dependencies @@ -58,7 +58,7 @@ pipeline { dir('kie-tools') { sh '''#!/bin/bash -el pnpm bootstrap:root - npx --yes syncpack@6.2.0 list-mismatches + npx --yes syncpack@13.0.0 list-mismatches '''.trim() } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.chrome-extensions b/.ci/jenkins/release-jobs/Jenkinsfile.chrome-extensions index 4680482ec5d..ed2060aaa9a 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.chrome-extensions +++ b/.ci/jenkins/release-jobs/Jenkinsfile.chrome-extensions @@ -113,7 +113,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.cors-proxy b/.ci/jenkins/release-jobs/Jenkinsfile.cors-proxy index 3b10f40fdd4..577a9fd4d0f 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.cors-proxy +++ b/.ci/jenkins/release-jobs/Jenkinsfile.cors-proxy @@ -115,7 +115,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.dashbuilder-viewer-image b/.ci/jenkins/release-jobs/Jenkinsfile.dashbuilder-viewer-image index ac03e1cef08..d397688b29e 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.dashbuilder-viewer-image +++ b/.ci/jenkins/release-jobs/Jenkinsfile.dashbuilder-viewer-image @@ -110,7 +110,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-base-image b/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-base-image index daf309eb427..8fb80d3b889 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-base-image +++ b/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-base-image @@ -110,7 +110,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-dmn-form-webapp-image b/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-dmn-form-webapp-image index 111627463a1..5067d560469 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-dmn-form-webapp-image +++ b/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-dmn-form-webapp-image @@ -110,7 +110,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-kogito-quarkus-blank-app-image b/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-kogito-quarkus-blank-app-image index c4f09261827..5deed41f18f 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-kogito-quarkus-blank-app-image +++ b/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-kogito-quarkus-blank-app-image @@ -110,7 +110,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-upload-service b/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-upload-service index 707b4962359..e1f15ff8491 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-upload-service +++ b/.ci/jenkins/release-jobs/Jenkinsfile.dev-deployment-upload-service @@ -89,7 +89,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.extended-services b/.ci/jenkins/release-jobs/Jenkinsfile.extended-services index a2975b59730..52bd1bcd2b7 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.extended-services +++ b/.ci/jenkins/release-jobs/Jenkinsfile.extended-services @@ -89,7 +89,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.jbpm-quarkus-devui b/.ci/jenkins/release-jobs/Jenkinsfile.jbpm-quarkus-devui index 973cbe0a516..96f84d080fd 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.jbpm-quarkus-devui +++ b/.ci/jenkins/release-jobs/Jenkinsfile.jbpm-quarkus-devui @@ -87,7 +87,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } @@ -118,16 +118,12 @@ pipeline { if (params.DRY_RUN) { env.KIE_TOOLS_BUILD__mavenDeploySkip = 'true' } - withCredentials([usernamePassword(credentialsId: "${pipelineVars.mavenDeployStagingCredentialsId}", usernameVariable: 'REPOSITORY_USER', passwordVariable: 'REPOSITORY_TOKEN')]) { - configFileProvider([configFile(fileId: "${pipelineVars.mavenSettingsConfigFileId}", variable: 'MAVEN_SETTINGS_FILE')]) { - sh """#!/bin/bash -el - pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -e "\n--settings=${MAVEN_SETTINGS_FILE}" >> .mvn/maven.config' - pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -Dapache.repository.username=${REPOSITORY_USER} >> .mvn/maven.config' - pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -Dapache.repository.password=${REPOSITORY_TOKEN} >> .mvn/maven.config' - pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -Papache-release >> .mvn/maven.config' - pnpm ${env.PNPM_FILTER_STRING} build:prod - """.trim() - } + configFileProvider([configFile(fileId: "${pipelineVars.mavenSettingsReleaseConfigFileId}", variable: 'MAVEN_SETTINGS_FILE')]) { + sh """#!/bin/bash -el + pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -e "\n--settings=${MAVEN_SETTINGS_FILE}" >> .mvn/maven.config' + pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -Papache-release >> .mvn/maven.config' + pnpm ${env.PNPM_FILTER_STRING} build:prod + """.trim() } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox b/.ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox index 7c9ccb20409..233a0861a56 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox +++ b/.ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox @@ -131,7 +131,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox-extended-services b/.ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox-extended-services index 7c435c3ddc6..4b0721279ac 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox-extended-services +++ b/.ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox-extended-services @@ -115,7 +115,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox-helm-chart b/.ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox-helm-chart index 817b095902d..7744c6ecca9 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox-helm-chart +++ b/.ci/jenkins/release-jobs/Jenkinsfile.kie-sandbox-helm-chart @@ -111,7 +111,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kn-plugin-workflow b/.ci/jenkins/release-jobs/Jenkinsfile.kn-plugin-workflow index 4437b7f4d02..a9cc2591e7f 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.kn-plugin-workflow +++ b/.ci/jenkins/release-jobs/Jenkinsfile.kn-plugin-workflow @@ -92,7 +92,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-management-console b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-management-console index 37aed0f5416..cac29a9f266 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-management-console +++ b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-management-console @@ -110,7 +110,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-serverless-operator b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-serverless-operator index 2b838ba744f..187b7a5ac19 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-serverless-operator +++ b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-serverless-operator @@ -113,7 +113,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-swf-builder b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-swf-builder index bae5d9e6ff0..ce596e477fc 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-swf-builder +++ b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-swf-builder @@ -112,7 +112,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-swf-devmode b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-swf-devmode index ab9f1ae97f6..1dd2afb81ea 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-swf-devmode +++ b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-swf-devmode @@ -112,7 +112,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-task-console b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-task-console index 6cf65c9bb86..95fe4f27554 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.kogito-task-console +++ b/.ci/jenkins/release-jobs/Jenkinsfile.kogito-task-console @@ -110,7 +110,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.npm-packages b/.ci/jenkins/release-jobs/Jenkinsfile.npm-packages index 305e92b5db3..77df5549678 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.npm-packages +++ b/.ci/jenkins/release-jobs/Jenkinsfile.npm-packages @@ -87,7 +87,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.online-editor b/.ci/jenkins/release-jobs/Jenkinsfile.online-editor index d02477294fd..1db4ff9f422 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.online-editor +++ b/.ci/jenkins/release-jobs/Jenkinsfile.online-editor @@ -123,7 +123,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.runtime-tools-consoles-helm-chart b/.ci/jenkins/release-jobs/Jenkinsfile.runtime-tools-consoles-helm-chart index 136251c4ecc..82e9f803742 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.runtime-tools-consoles-helm-chart +++ b/.ci/jenkins/release-jobs/Jenkinsfile.runtime-tools-consoles-helm-chart @@ -111,7 +111,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.serverless-logic-web-tools b/.ci/jenkins/release-jobs/Jenkinsfile.serverless-logic-web-tools index 5440140cb5d..2893b7dff92 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.serverless-logic-web-tools +++ b/.ci/jenkins/release-jobs/Jenkinsfile.serverless-logic-web-tools @@ -105,7 +105,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.serverless-logic-web-tools-base-builder-image b/.ci/jenkins/release-jobs/Jenkinsfile.serverless-logic-web-tools-base-builder-image index 99443bf0dd9..2aa71a9e11b 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.serverless-logic-web-tools-base-builder-image +++ b/.ci/jenkins/release-jobs/Jenkinsfile.serverless-logic-web-tools-base-builder-image @@ -110,7 +110,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.serverless-logic-web-tools-swf-builder-image b/.ci/jenkins/release-jobs/Jenkinsfile.serverless-logic-web-tools-swf-builder-image index f2516dbb95a..ed6f44d70ab 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.serverless-logic-web-tools-swf-builder-image +++ b/.ci/jenkins/release-jobs/Jenkinsfile.serverless-logic-web-tools-swf-builder-image @@ -112,7 +112,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.serverless-logic-web-tools-swf-dev-mode-image b/.ci/jenkins/release-jobs/Jenkinsfile.serverless-logic-web-tools-swf-dev-mode-image index 28e0d322e9d..29d2fc9cc49 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.serverless-logic-web-tools-swf-dev-mode-image +++ b/.ci/jenkins/release-jobs/Jenkinsfile.serverless-logic-web-tools-swf-dev-mode-image @@ -110,7 +110,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.sonataflow-quarkus-devui b/.ci/jenkins/release-jobs/Jenkinsfile.sonataflow-quarkus-devui index b8045811acb..f7132541af0 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.sonataflow-quarkus-devui +++ b/.ci/jenkins/release-jobs/Jenkinsfile.sonataflow-quarkus-devui @@ -87,7 +87,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } @@ -118,16 +118,12 @@ pipeline { if (params.DRY_RUN) { env.KIE_TOOLS_BUILD__mavenDeploySkip = 'true' } - withCredentials([usernamePassword(credentialsId: "${pipelineVars.mavenDeployStagingCredentialsId}", usernameVariable: 'REPOSITORY_USER', passwordVariable: 'REPOSITORY_TOKEN')]) { - configFileProvider([configFile(fileId: "${pipelineVars.mavenSettingsConfigFileId}", variable: 'MAVEN_SETTINGS_FILE')]) { - sh """#!/bin/bash -el - pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -e "\n--settings=${MAVEN_SETTINGS_FILE}" >> .mvn/maven.config' - pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -Dapache.repository.username=${REPOSITORY_USER} >> .mvn/maven.config' - pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -Dapache.repository.password=${REPOSITORY_TOKEN} >> .mvn/maven.config' - pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -Papache-release >> .mvn/maven.config' - pnpm ${env.PNPM_FILTER_STRING} build:prod - """.trim() - } + configFileProvider([configFile(fileId: "${pipelineVars.mavenSettingsReleaseConfigFileId}", variable: 'MAVEN_SETTINGS_FILE')]) { + sh """#!/bin/bash -el + pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -e "\n--settings=${MAVEN_SETTINGS_FILE}" >> .mvn/maven.config' + pnpm ${env.PNPM_FILTER_STRING} exec 'bash' '-c' 'echo -Papache-release >> .mvn/maven.config' + pnpm ${env.PNPM_FILTER_STRING} build:prod + """.trim() } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.standalone-editors-cdn b/.ci/jenkins/release-jobs/Jenkinsfile.standalone-editors-cdn index 082846ce010..68ddb16f12f 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.standalone-editors-cdn +++ b/.ci/jenkins/release-jobs/Jenkinsfile.standalone-editors-cdn @@ -104,7 +104,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.vscode-extensions-dev b/.ci/jenkins/release-jobs/Jenkinsfile.vscode-extensions-dev index 057f559a52f..d312f595d48 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.vscode-extensions-dev +++ b/.ci/jenkins/release-jobs/Jenkinsfile.vscode-extensions-dev @@ -85,7 +85,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/release-jobs/Jenkinsfile.vscode-extensions-prod b/.ci/jenkins/release-jobs/Jenkinsfile.vscode-extensions-prod index 8368bf010e8..4385afa2f05 100644 --- a/.ci/jenkins/release-jobs/Jenkinsfile.vscode-extensions-prod +++ b/.ci/jenkins/release-jobs/Jenkinsfile.vscode-extensions-prod @@ -87,7 +87,7 @@ pipeline { steps { dir('kie-tools') { script { - buildUtils.setupPnpm("${pipelineVars.mavenSettingsConfigFileId}") + buildUtils.setupPnpm("${pipelineVars.mavenSettingsReleaseConfigFileId}") } } } diff --git a/.ci/jenkins/shared-scripts/buildUtils.groovy b/.ci/jenkins/shared-scripts/buildUtils.groovy index de24bb6fbb3..c750283d1c1 100644 --- a/.ci/jenkins/shared-scripts/buildUtils.groovy +++ b/.ci/jenkins/shared-scripts/buildUtils.groovy @@ -51,7 +51,6 @@ def setupPnpm(String mavenSettingsFileId = '') { pnpm config set network-timeout 1000000 pnpm -r exec 'bash' '-c' 'mkdir .mvn' pnpm -r exec 'bash' '-c' 'echo -B > .mvn/maven.config' - pnpm -r exec 'bash' '-c' 'echo -ntp >> .mvn/maven.config' pnpm -r exec 'bash' '-c' 'echo -Xmx2g > .mvn/jvm.config' """.trim() diff --git a/.ci/jenkins/shared-scripts/pipelineVars.groovy b/.ci/jenkins/shared-scripts/pipelineVars.groovy index 6f87c9f0256..d83f6327b78 100644 --- a/.ci/jenkins/shared-scripts/pipelineVars.groovy +++ b/.ci/jenkins/shared-scripts/pipelineVars.groovy @@ -35,9 +35,8 @@ class PipelineVars implements Serializable { String asfCIGithubCredentialsId = '399061d0-5ab5-4142-a186-a52081fef742' String asfGithubPushCredentialsId = '84811880-2025-45b6-a44c-2f33bef30ad2' String asfGithubTokenPushCredentialsId = '41128c14-bb63-4708-9074-d20a318ee630' - String mavenSettingsConfigFileId = 'kie-release-settings' - String mavenDeploySnapshotsCredentialsId = 'apache-nexus-kie-deploy-credentials' - String mavenDeployStagingCredentialsId = 'jenkins-deploy-to-nexus-staging' + String mavenSettingsReleaseConfigFileId = 'kie-release-authn-settings' + String mavenSettingsNightlyConfigFileId = 'kie-nightly-authn-settings' String defaultArtifactsTempDir = 'artifacts-tmp' String asfReleaseStagingRepository = 'https://dist.apache.org/repos/dist/dev/incubator/kie' String asfReleaseGPGKeyCredentialsId = 'GPG_KEY_FILE' diff --git a/DISCLAIMER b/DISCLAIMER-WIP similarity index 100% rename from DISCLAIMER rename to DISCLAIMER-WIP diff --git a/examples/jbpm-compact-architecture-example/docker-compose/README.md b/examples/jbpm-compact-architecture-example/docker-compose/README.md index efc66a2e671..62c8d80dd1a 100644 --- a/examples/jbpm-compact-architecture-example/docker-compose/README.md +++ b/examples/jbpm-compact-architecture-example/docker-compose/README.md @@ -6,14 +6,13 @@ To allow a quick setup of all services required to run this demo, we provide a d - PgAdmin - Kogito Example Service (Only available if the example has been compiled using the `container` mvn profile eg: `mvn clean package -Dcontainer`) - Kogito Management Console -- Kogito Task Console - Keycloak The docker compose template provides three profiles to enable starting only the set of services you want to use. The profiles are: - **infra**: Starts only the minimal infrastructure to run the example (Postgresql, pgadmin, Kogito Data Index) - **example**: Starts the services in _infra_ profile and the Kogito Example Service. Requires the example to be compiled using the `container` mvn profile eg: `mvn clean package -Dcontainer`. -- **full** (default): includes all the above and also starts the **Management Console**, **Task Console** and a **Keycloak** to handle the consoles authentication. Requires the example to be compiled using the `container` mvn profile eg: `mvn clean package -Dcontainer`. +- **full** (default): includes all the above and also starts the **Management Console** and **Keycloak** to handle the console authentication. Requires the example to be compiled using the `container` mvn profile eg: `mvn clean package -Dcontainer`. > NOTE: In order to use it, please ensure you have Docker Compose installed on your machine, otherwise follow the instructions available > in [here](https://docs.docker.com/compose/install/). @@ -34,7 +33,6 @@ Once the services are started (depending on the profile), the following ports wi - PgAdmin: 8055 - Kogito Example Service: 8080 - Kogito Management Console: 8280 -- Kogito Task Console: 8380 - Keycloak: 8480 ## Stopping and removing volume data diff --git a/examples/jbpm-compact-architecture-example/docker-compose/docker-compose.yml b/examples/jbpm-compact-architecture-example/docker-compose/docker-compose.yml index 6e7484029c4..4490b4adaea 100644 --- a/examples/jbpm-compact-architecture-example/docker-compose/docker-compose.yml +++ b/examples/jbpm-compact-architecture-example/docker-compose/docker-compose.yml @@ -97,27 +97,14 @@ services: depends_on: jbpm-compact-architecture-example-service: condition: service_started + # keycloak: + # condition: service_healthy volumes: - ./svg/:/home/kogito/data/svg/ environment: RUNTIME_TOOLS_MANAGEMENT_CONSOLE_KOGITO_ENV_MODE: "DEV" RUNTIME_TOOLS_MANAGEMENT_CONSOLE_DATA_INDEX_ENDPOINT: http://${DOCKER_GATEWAY_HOST:-host.docker.internal}:8080/graphql - - task-console: - container_name: task-console - image: ${KOGITO_TASK_CONSOLE_IMAGE} - profiles: ["full"] - ports: - - 8380:8080 - depends_on: - jbpm-compact-architecture-example-service: - condition: service_started - keycloak: - condition: service_healthy - environment: - RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_ENV_MODE: "PROD" - RUNTIME_TOOLS_TASK_CONSOLE_DATA_INDEX_ENDPOINT: http://${DOCKER_GATEWAY_HOST:-host.docker.internal}:8080/graphql - KOGITO_CONSOLES_KEYCLOAK_HEALTH_CHECK_URL: http://localhost:8480/auth/realms/kogito/.well-known/openid-configuration - KOGITO_CONSOLES_KEYCLOAK_URL: http://localhost:8480/auth - KOGITO_CONSOLES_KEYCLOAK_REALM: kogito - KOGITO_CONSOLES_KEYCLOAK_CLIENT_ID: kogito-console-quarkus + # KOGITO_CONSOLES_KEYCLOAK_HEALTH_CHECK_URL: http://localhost:8480/auth/realms/kogito/.well-known/openid-configuration + # KOGITO_CONSOLES_KEYCLOAK_URL: http://localhost:8480/auth + # KOGITO_CONSOLES_KEYCLOAK_REALM: kogito + # KOGITO_CONSOLES_KEYCLOAK_CLIENT_ID: kogito-console-quarkus diff --git a/examples/jbpm-compact-architecture-example/docker-compose/startServices.sh b/examples/jbpm-compact-architecture-example/docker-compose/startServices.sh index e8a42f5b2ee..a24bd93e4e7 100755 --- a/examples/jbpm-compact-architecture-example/docker-compose/startServices.sh +++ b/examples/jbpm-compact-architecture-example/docker-compose/startServices.sh @@ -6,8 +6,6 @@ echo "Script requires your Kogito Example to be compiled" PROJECT_VERSION=$(cd ../ && mvn help:evaluate -Dexpression=project.version -q -DforceStdout) KOGITO_MANAGEMENT_CONSOLE_IMAGE=$(cd ../ && mvn help:evaluate -Dexpression=kogito.management-console.image -q -DforceStdout) -KOGITO_TASK_CONSOLE_IMAGE=$(cd ../ && mvn help:evaluate -Dexpression=kogito.task-console.image -q -DforceStdout) - if [ -n "$1" ]; then if [[ ("$1" == "full") || ("$1" == "infra") || ("$1" == "example")]]; @@ -17,14 +15,13 @@ if [ -n "$1" ]; then echo "Unknown docker profile '$1'. The supported profiles are:" echo "* 'infra': Use this profile to start only the minimum infrastructure to run the example (postgresql, data-index & jobs-service)." echo "* 'example': Use this profile to start the example infrastructure and the kogito-example service. Requires the example to be compiled using the 'container' profile (-Pcontainer)" - echo "* 'full' (default): Starts full example setup, including infrastructure (database, data-index & jobs-service), the kogito-example-service container and the runtime consoles (management-console, task-console & keycloak). Requires the example to be compiled using the 'container' profile (-Pcontainer)" + echo "* 'full' (default): Starts full example setup, including infrastructure (database, data-index & jobs-service), the kogito-example-service container and the runtime consoles (management-console & keycloak). Requires the example to be compiled using the 'container' profile (-Pcontainer)" exit 1; fi fi echo "PROJECT_VERSION=${PROJECT_VERSION}" > ".env" echo "KOGITO_MANAGEMENT_CONSOLE_IMAGE=${KOGITO_MANAGEMENT_CONSOLE_IMAGE}" >> ".env" -echo "KOGITO_TASK_CONSOLE_IMAGE=${KOGITO_TASK_CONSOLE_IMAGE}" >> ".env" echo "COMPOSE_PROFILES='${PROFILE}'" >> ".env" if [ "$(uname)" == "Darwin" ]; then diff --git a/examples/jbpm-compact-architecture-example/env/index.js b/examples/jbpm-compact-architecture-example/env/index.js index a047ba465e4..16c5c38a4fe 100644 --- a/examples/jbpm-compact-architecture-example/env/index.js +++ b/examples/jbpm-compact-architecture-example/env/index.js @@ -23,26 +23,17 @@ const { env: { kogitoManagementConsole: kogitoManagementConsoleImageEnv }, } = require("@kie-tools/kogito-management-console/env"); -const { - env: { kogitoTaskConsole: kogitoTaskConsoleImageEnv }, -} = require("@kie-tools/kogito-task-console/env"); - module.exports = composeEnv([require("@kie-tools/root-env/env")], { vars: varsWithName({ JBPM_COMPACT_ARCHITECTURE_EXAMPLE__managementConsoleImage: { default: `${kogitoManagementConsoleImageEnv.registry}/${kogitoManagementConsoleImageEnv.account}/${kogitoManagementConsoleImageEnv.name}:${kogitoManagementConsoleImageEnv.buildTag}`, description: "The image for the Kogito Management Console.", }, - JBPM_COMPACT_ARCHITECTURE_EXAMPLE__taskConsoleImage: { - default: `${kogitoTaskConsoleImageEnv.registry}/${kogitoTaskConsoleImageEnv.account}/${kogitoTaskConsoleImageEnv.name}:${kogitoTaskConsoleImageEnv.buildTag}`, - description: "The image for the Kogito Task Console.", - }, }), get env() { return { jbpmCompactArchitectureExample: { kogitoManagementConsoleImage: getOrDefault(this.vars.JBPM_COMPACT_ARCHITECTURE_EXAMPLE__managementConsoleImage), - kogitoTaskConsoleImage: getOrDefault(this.vars.JBPM_COMPACT_ARCHITECTURE_EXAMPLE__taskConsoleImage), version: require("../package.json").version, }, }; diff --git a/examples/jbpm-compact-architecture-example/install.js b/examples/jbpm-compact-architecture-example/install.js index fea906ae027..bfd7bde0f2b 100644 --- a/examples/jbpm-compact-architecture-example/install.js +++ b/examples/jbpm-compact-architecture-example/install.js @@ -29,8 +29,3 @@ setPomProperty({ key: "kogito.management-console.image", value: env.jbpmCompactArchitectureExample.kogitoManagementConsoleImage, }); - -setPomProperty({ - key: "kogito.task-console.image", - value: env.jbpmCompactArchitectureExample.kogitoTaskConsoleImage, -}); diff --git a/examples/jbpm-compact-architecture-example/package.json b/examples/jbpm-compact-architecture-example/package.json index 0798fce2a16..ea517540de3 100644 --- a/examples/jbpm-compact-architecture-example/package.json +++ b/examples/jbpm-compact-architecture-example/package.json @@ -41,7 +41,6 @@ }, "devDependencies": { "@kie-tools/kogito-management-console": "workspace:*", - "@kie-tools/kogito-task-console": "workspace:*", "@kie-tools/root-env": "workspace:*", "run-script-os": "^1.1.6" }, diff --git a/examples/jbpm-compact-architecture-example/pom.xml b/examples/jbpm-compact-architecture-example/pom.xml index 8dec3b6446d..f335dd56525 100644 --- a/examples/jbpm-compact-architecture-example/pom.xml +++ b/examples/jbpm-compact-architecture-example/pom.xml @@ -98,7 +98,7 @@ org.kie - kogito-addons-quarkus-data-index-postgresql + kogito-addons-quarkus-data-index-jpa @@ -108,7 +108,7 @@ org.kie.kogito - jobs-service-postgresql-common + jobs-service-storage-jpa @@ -156,6 +156,10 @@ org.jbpm jbpm-quarkus-devui + + io.quarkus + quarkus-jdbc-h2 + diff --git a/examples/jbpm-compact-architecture-example/src/main/resources/application.properties b/examples/jbpm-compact-architecture-example/src/main/resources/application.properties index 895d72d580f..a26cd8c296d 100644 --- a/examples/jbpm-compact-architecture-example/src/main/resources/application.properties +++ b/examples/jbpm-compact-architecture-example/src/main/resources/application.properties @@ -18,20 +18,19 @@ kogito.jobs-service.url=http://0.0.0.0:8080 kogito.data-index.url=http://0.0.0.0:8080 # run create tables scripts -quarkus.flyway.migrate-at-start=true -quarkus.flyway.baseline-on-migrate=true -quarkus.flyway.baseline-version=0.0 -quarkus.flyway.locations=classpath:/db/migration,classpath:/db/jobs-service,classpath:/db/data-audit/postgresql -quarkus.flyway.table=FLYWAY_RUNTIME_SERVICE +kie.flyway.enabled=true kogito.persistence.type=jdbc +# Default application datasource properties quarkus.datasource.db-kind=postgresql -%prod.quarkus.datasource.username=kogito-user -%prod.quarkus.datasource.password=kogito-pass -%prod.quarkus.datasource.jdbc.url=${QUARKUS_DATASOURCE_JDBC_URL:jdbc:postgresql://0.0.0.0:5432/kogito} -%prod.quarkus.datasource.reactive.url=${QUARKUS_DATASOURCE_REACTIVE_URL:postgresql://0.0.0.0:5432/kogito} - -quarkus.native.native-image-xmx=8g +quarkus.datasource.username=kogito-user +quarkus.datasource.password=kogito-pass +quarkus.datasource.jdbc.url=${QUARKUS_DATASOURCE_JDBC_URL:jdbc:postgresql://0.0.0.0:5432/kogito} +quarkus.datasource.reactive.url=${QUARKUS_DATASOURCE_REACTIVE_URL:postgresql://0.0.0.0:5432/kogito} +# Development application datasource properties +%dev.quarkus.datasource.db-kind=h2 +%dev.quarkus.datasource.username=kogito +%dev.quarkus.datasource.jdbc.url=jdbc:h2:mem:default;NON_KEYWORDS=VALUE,KEY # profile to pack this example into a container, to use it execute activate the maven container profile, -Pcontainer %container.quarkus.container-image.build=true diff --git a/packages/boxed-expression-component/package.json b/packages/boxed-expression-component/package.json index a39d3184569..c298c340c1b 100644 --- a/packages/boxed-expression-component/package.json +++ b/packages/boxed-expression-component/package.json @@ -7,7 +7,7 @@ "scripts": { "build:dev": "rimraf dist && pnpm copy:css && tsc -p tsconfig.json", "build:prod": "rimraf dist && pnpm copy:css && pnpm lint && tsc -p tsconfig.json && pnpm test && pnpm test-e2e", - "build:storybook": "storybook build -o dist-storybook", + "build:storybook": "rimraf dist-storybook && NODE_ENV=development storybook build -o dist-storybook", "copy:css": "copyfiles -u 1 \"src/**/*.{sass,scss,css}\" dist/", "deploy": "gh-pages -d dist-dev", "lint": "run-script-if --bool \"$(build-env linters.run)\" --then \"kie-tools--eslint ./src\"", diff --git a/packages/cors-proxy/package.json b/packages/cors-proxy/package.json index dc96bbfef5d..cf2296006ca 100644 --- a/packages/cors-proxy/package.json +++ b/packages/cors-proxy/package.json @@ -27,7 +27,7 @@ }, "dependencies": { "cors": "^2.8.5", - "express": "^4.21.0", + "express": "^4.21.1", "node-fetch": "^3.3.1" }, "devDependencies": { diff --git a/packages/dev-deployment-kogito-quarkus-blank-app-image/Containerfile b/packages/dev-deployment-kogito-quarkus-blank-app-image/Containerfile index 6eaa2e3e6f1..9fad06ed812 100644 --- a/packages/dev-deployment-kogito-quarkus-blank-app-image/Containerfile +++ b/packages/dev-deployment-kogito-quarkus-blank-app-image/Containerfile @@ -30,7 +30,7 @@ COPY --chown=$USER_ID:$USER_ID dist-dev/quarkus-app $HOME_PATH/app/ COPY --chown=$USER_ID:$USER_ID dist-dev/settings.xml /tmp/kogito/.m2/settings.xml # Pre-populate local Maven repository for faster startup -RUN ./mvnw clean package -B -nsu -ntp --settings /tmp/kogito/.m2/settings.xml -Dmaven.test.skip -Dmaven.repo.local=/tmp/kogito/.m2/repository -Dquarkus.http.non-application-root-path=${ROOT_PATH}/q -Dquarkus.http.root-path=${ROOT_PATH} \ +RUN ./mvnw clean package -B -nsu --settings /tmp/kogito/.m2/settings.xml -Dmaven.test.skip -Dmaven.repo.local=/tmp/kogito/.m2/repository -Dquarkus.http.non-application-root-path=${ROOT_PATH}/q -Dquarkus.http.root-path=${ROOT_PATH} \ && chgrp -R 0 $HOME_PATH/app && chmod -R g=u $HOME_PATH/app && chgrp -R 0 /tmp/kogito && chmod -R g=u /tmp/kogito && chgrp -R 0 /.m2 && chmod -R g=u /.m2 USER $USER_ID diff --git a/packages/dmn-editor/package.json b/packages/dmn-editor/package.json index a7328dac98e..3441696ef18 100644 --- a/packages/dmn-editor/package.json +++ b/packages/dmn-editor/package.json @@ -19,7 +19,7 @@ "scripts": { "build:dev": "rimraf dist && pnpm copy:css && tsc -p tsconfig.json", "build:prod": "rimraf dist && pnpm copy:css && pnpm lint && tsc -p tsconfig.json && pnpm test-e2e && pnpm test", - "build:storybook": "storybook build -o dist-storybook", + "build:storybook": "rimraf dist-storybook && NODE_ENV=development storybook build -o dist-storybook", "copy:css": "copyfiles -u 1 \"src/**/*.{sass,scss,css}\" dist/", "lint": "run-script-if --bool \"$(build-env linters.run)\" --then \"kie-tools--eslint ./src\"", "start": "run-script-os", @@ -54,7 +54,7 @@ "fast-deep-equal": "^3.1.3", "immer": "^10.0.3", "moment": "^2.29.4", - "react-error-boundary": "^4.0.11", + "react-error-boundary": "^4.0.13", "reactflow": "^11.8.3", "uuid": "^8.3.2", "zustand": "^4.4.2" diff --git a/packages/dmn-editor/stories/useCases/loanPreQualification/LoanPreQualification.stories.tsx b/packages/dmn-editor/stories/useCases/loanPreQualification/LoanPreQualification.stories.tsx index 01285c05d15..131be55e62a 100644 --- a/packages/dmn-editor/stories/useCases/loanPreQualification/LoanPreQualification.stories.tsx +++ b/packages/dmn-editor/stories/useCases/loanPreQualification/LoanPreQualification.stories.tsx @@ -792,7 +792,6 @@ const model = marshaller.parser.parse(); export const LoanPreQualification: Story = { render: Empty.render, args: { - ...Empty.args, model: model, xml: marshaller.builder.build(model), }, diff --git a/packages/jbpm-quarkus-devui/dev/pom.xml b/packages/jbpm-quarkus-devui/dev/pom.xml index 378d5f824c8..90dfb810f19 100644 --- a/packages/jbpm-quarkus-devui/dev/pom.xml +++ b/packages/jbpm-quarkus-devui/dev/pom.xml @@ -174,58 +174,6 @@ src/main/resources - - - - maven-site-plugin - - - org.apache.commons - commons-compress - - - org.iq80.snappy - snappy - - - - - maven-remote-resources-plugin - - - org.apache.commons - commons-compress - - - org.iq80.snappy - snappy - - - - - maven-jar-plugin - - - org.iq80.snappy - snappy - - - - - maven-surefire-plugin - - - org.iq80.snappy - snappy - - - org.apache.commons - commons-compress - - - - - io.quarkus diff --git a/packages/kie-editors-dev-vscode-extension/package.json b/packages/kie-editors-dev-vscode-extension/package.json index d69caf24e54..e6f92302c56 100644 --- a/packages/kie-editors-dev-vscode-extension/package.json +++ b/packages/kie-editors-dev-vscode-extension/package.json @@ -75,7 +75,7 @@ "rimraf": "^3.0.2", "sanitize-filename-ts": "^1.0.2", "typescript": "^5.5.3", - "vscode-extension-tester": "^8.3.1", + "vscode-extension-tester": "^8.8.0", "webpack": "^5.94.0", "webpack-cli": "^4.10.0", "webpack-dev-server": "^4.15.1", diff --git a/packages/kogito-base-builder-image/package.json b/packages/kogito-base-builder-image/package.json index 1d9b93bc25a..806db506377 100644 --- a/packages/kogito-base-builder-image/package.json +++ b/packages/kogito-base-builder-image/package.json @@ -21,7 +21,7 @@ "image:build": "run-script-os", "image:build:darwin:linux": "pnpm setup:env make -C ./build build", "image:build:win32": "echo \"Build skipped on Windows\"", - "image:test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env endToEndTests.run)\" --then \"mkdir -p build/target/test/results\" \"run-script-os\" --finally \"mkdir -p build/target/test/results && cp -R build/target/test/results dist-tests-e2e/\"", + "image:test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env endToEndTests.run)\" --then \"mkdir -p build/target/test/results\" \"run-script-os\" --finally \"mkdir -p build/target/test/results\" \"cp -R build/target/test/results dist-tests-e2e/\"", "image:test:darwin:linux": "pnpm setup:env make -C ./build test-image", "image:test:win32": "echo \"Tests skipped on Windows\"", "install": "node install.js && pnpm format", diff --git a/packages/kogito-data-index-ephemeral-image/package.json b/packages/kogito-data-index-ephemeral-image/package.json index 0dbc35370c5..6cc2887dec4 100644 --- a/packages/kogito-data-index-ephemeral-image/package.json +++ b/packages/kogito-data-index-ephemeral-image/package.json @@ -13,7 +13,7 @@ "url": "https://github.com/apache/incubator-kie-tools/issues" }, "scripts": { - "build:dev": "run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm copy-assets\" \"pnpm image:build\"", + "build:dev": "run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm mvn-build-app\" \"pnpm copy-assets\" \"pnpm image:build\"", "build:prod": "pnpm build:dev && pnpm image:test", "copy-assets": "run-script-os", "copy-assets:linux:darwin": "rimraf build && cp -R ./node_modules/@kie-tools/sonataflow-image-common/resources build && cp -R resources/* build", @@ -21,15 +21,19 @@ "copy-test-assets:linux:darwin": "cp -R test-resources/. build", "format": "prettier --write . --ignore-path=../../.prettierignore --ignore-path=../../.gitignore", "image:build": "run-script-os", - "image:build:darwin:linux": "pnpm setup:env make -C ./build build-kogito-app build", + "image:build:darwin:linux": "pnpm setup:env make -C ./build build", "image:build:win32": "echo \"Build skipped on Windows\"", - "image:test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env endToEndTests.run)\" --then \"mkdir -p build/target/test/results\" \"run-script-os\" --finally \"mkdir -p build/target/test/results && cp -R build/target/test/results dist-tests-e2e/\"", + "image:test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env endToEndTests.run)\" --then \"mkdir -p build/target/test/results\" \"run-script-os\" --finally \"mkdir -p build/target/test/results\" \"cp -R build/target/test/results dist-tests-e2e/\"", "image:test:darwin:linux": "pnpm copy-test-assets && pnpm setup:env make -C ./build test-image", "image:test:win32": "echo \"Tests skipped on Windows\"", "install": "node install.js && pnpm format", + "mvn-build-app": "run-script-os", + "mvn-build-app:linux:darwin": "mvn -am package -Dquarkus.package.type=fast-jar -Dquarkus.container-image.build=false -B -f ./resources/app/pom.xml", + "mvn-build-app:win32": "echo \"Build skipped on Windows\"", "setup:env": ". ./node_modules/@kie-tools/python-venv/venv/bin/activate && cross-env KOGITO_IMAGE_REGISTRY=$(build-env kogitoDataIndexEphemeralImage.registry) KOGITO_IMAGE_REGISTRY_ACCOUNT=$(build-env kogitoDataIndexEphemeralImage.account) KOGITO_IMAGE_NAME=$(build-env kogitoDataIndexEphemeralImage.name) KOGITO_IMAGE_TAG=$(build-env kogitoDataIndexEphemeralImage.buildTag) QUARKUS_PLATFORM_VERSION=$(build-env versions.quarkus) KOGITO_VERSION=$(build-env versions.kogito)" }, "devDependencies": { + "@kie-tools/maven-base": "workspace:*", "@kie-tools/python-venv": "workspace:*", "@kie-tools/root-env": "workspace:*", "@kie-tools/sonataflow-image-common": "workspace:*", diff --git a/packages/kogito-data-index-ephemeral-image/resources/app/pom.xml b/packages/kogito-data-index-ephemeral-image/resources/app/pom.xml new file mode 100644 index 00000000000..ae7bd8c8f94 --- /dev/null +++ b/packages/kogito-data-index-ephemeral-image/resources/app/pom.xml @@ -0,0 +1,63 @@ + + + + 4.0.0 + + org.kie + kie-tools-maven-base + ${revision} + ../../node_modules/@kie-tools/maven-base/pom.xml + + + kogito-data-index-ephemeral-image-app + ${revision} + + KIE Tools :: Kogito Data Index Ephemeral Image :: App + Kogito Data Index Ephemeral Image Quarkus App + + + + org.kie.kogito + data-index-service-inmemory + ${version.org.kie.kogito} + + + + + ${project.artifactId} + + + io.quarkus + quarkus-maven-plugin + + + + build + + + + + + + diff --git a/packages/kogito-data-index-ephemeral-image/resources/incubator-kie-kogito-data-index-ephemeral-image.yaml b/packages/kogito-data-index-ephemeral-image/resources/incubator-kie-kogito-data-index-ephemeral-image.yaml index 5c414019813..d4be0f424bc 100644 --- a/packages/kogito-data-index-ephemeral-image/resources/incubator-kie-kogito-data-index-ephemeral-image.yaml +++ b/packages/kogito-data-index-ephemeral-image/resources/incubator-kie-kogito-data-index-ephemeral-image.yaml @@ -16,25 +16,23 @@ # specific language governing permissions and limitations # under the License. # -schema_version: 1 - name: "docker.io/apache/incubator-kie-kogito-data-index-ephemeral" version: "main" -from: "registry.access.redhat.com/ubi8/openjdk-17-runtime:1.19" +from: "registry.access.redhat.com/ubi8/openjdk-17-runtime:1.20" description: "Runtime image for Kogito Data Index Service for ephemeral PostgreSQL persistence provider" labels: - - name: "org.kie.kogito.version" + - name: org.kie.kogito.version value: "### SET ME DURING BUILD PROCESS ###" - - name: "maintainer" + - name: maintainer value: "Apache KIE " - - name: "io.k8s.description" + - name: io.k8s.description value: "Runtime image for Kogito Data Index Service for ephemeral PostgreSQL persistence provider" - - name: "io.k8s.display-name" + - name: io.k8s.display-name value: "Kogito Data Index Service - ephemeral PostgreSQL" - - name: "io.openshift.tags" + - name: io.openshift.tags value: "kogito,data-index,data-index-ephemeral" - - name: "io.openshift.expose-services" + - name: io.openshift.expose-services value: "8080:http" envs: diff --git a/packages/kogito-data-index-ephemeral-image/resources/modules/kogito-data-index-ephemeral/module.yaml b/packages/kogito-data-index-ephemeral-image/resources/modules/kogito-data-index-ephemeral/module.yaml index 94e22660e5b..88fc47af32b 100644 --- a/packages/kogito-data-index-ephemeral-image/resources/modules/kogito-data-index-ephemeral/module.yaml +++ b/packages/kogito-data-index-ephemeral-image/resources/modules/kogito-data-index-ephemeral/module.yaml @@ -20,12 +20,10 @@ schema_version: 1 name: org.kie.kogito.dataindex.ephemeral version: "main" -# see build-kogito-apps-components.sh script, responsible for build it. -# called by the Makefile before builds +# Relative to build/target/image/modules/, that's why the four `../` artifacts: - - path: /tmp/build/data-index-service-inmemory - dest: /home/kogito/bin - name: quarkus-app + - path: ../../../../app/target/quarkus-app + dest: /home/kogito/bin/quarkus-app execute: - script: configure diff --git a/packages/kogito-data-index-postgresql-image/package.json b/packages/kogito-data-index-postgresql-image/package.json index 39269ed21fb..92fbd5c800e 100644 --- a/packages/kogito-data-index-postgresql-image/package.json +++ b/packages/kogito-data-index-postgresql-image/package.json @@ -13,7 +13,7 @@ "url": "https://github.com/apache/incubator-kie-tools/issues" }, "scripts": { - "build:dev": "run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm copy-assets\" \"pnpm image:build\"", + "build:dev": "run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm mvn-build-app\" \"pnpm copy-assets\" \"pnpm image:build\"", "build:prod": "pnpm build:dev && pnpm image:test", "copy-assets": "run-script-os", "copy-assets:linux:darwin": "rimraf build && cp -R ./node_modules/@kie-tools/sonataflow-image-common/resources build && cp -R resources/* build", @@ -21,15 +21,19 @@ "copy-test-assets:linux:darwin": "cp -R test-resources/. build", "format": "prettier --write . --ignore-path=../../.prettierignore --ignore-path=../../.gitignore", "image:build": "run-script-os", - "image:build:darwin:linux": "pnpm setup:env make -C ./build build-kogito-app build", + "image:build:darwin:linux": "pnpm setup:env make -C ./build build", "image:build:win32": "echo \"Build skipped on Windows\"", - "image:test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env endToEndTests.run)\" --then \"mkdir -p build/target/test/results\" \"run-script-os\" --finally \"mkdir -p build/target/test/results && cp -R build/target/test/results dist-tests-e2e/\"", + "image:test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env endToEndTests.run)\" --then \"mkdir -p build/target/test/results\" \"run-script-os\" --finally \"mkdir -p build/target/test/results\" \"cp -R build/target/test/results dist-tests-e2e/\"", "image:test:darwin:linux": "pnpm copy-test-assets && pnpm setup:env make -C ./build test-image", "image:test:win32": "echo \"Tests skipped on Windows\"", "install": "node install.js && pnpm format", + "mvn-build-app": "run-script-os", + "mvn-build-app:linux:darwin": "mvn -am package -Dquarkus.package.type=fast-jar -Dquarkus.container-image.build=false -B -f ./resources/app/pom.xml", + "mvn-build-app:win32": "echo \"Build skipped on Windows\"", "setup:env": ". ./node_modules/@kie-tools/python-venv/venv/bin/activate && cross-env KOGITO_IMAGE_REGISTRY=$(build-env kogitoDataIndexPostgresqlImage.registry) KOGITO_IMAGE_REGISTRY_ACCOUNT=$(build-env kogitoDataIndexPostgresqlImage.account) KOGITO_IMAGE_NAME=$(build-env kogitoDataIndexPostgresqlImage.name) KOGITO_IMAGE_TAG=$(build-env kogitoDataIndexPostgresqlImage.buildTag) QUARKUS_PLATFORM_VERSION=$(build-env versions.quarkus) KOGITO_VERSION=$(build-env versions.kogito)" }, "devDependencies": { + "@kie-tools/maven-base": "workspace:*", "@kie-tools/python-venv": "workspace:*", "@kie-tools/root-env": "workspace:*", "@kie-tools/sonataflow-image-common": "workspace:*", diff --git a/packages/kogito-data-index-postgresql-image/resources/app/pom.xml b/packages/kogito-data-index-postgresql-image/resources/app/pom.xml new file mode 100644 index 00000000000..c055b84a81e --- /dev/null +++ b/packages/kogito-data-index-postgresql-image/resources/app/pom.xml @@ -0,0 +1,63 @@ + + + + 4.0.0 + + org.kie + kie-tools-maven-base + ${revision} + ../../node_modules/@kie-tools/maven-base/pom.xml + + + kogito-data-index-postgresql-image-app + ${revision} + + KIE Tools :: Kogito Data Index PostgreSQL Image :: App + Kogito Data Index PostgreSQL Image Quarkus App + + + + org.kie.kogito + data-index-service-postgresql + ${version.org.kie.kogito} + + + + + ${project.artifactId} + + + io.quarkus + quarkus-maven-plugin + + + + build + + + + + + + diff --git a/packages/kogito-data-index-postgresql-image/resources/incubator-kie-kogito-data-index-postgresql-image.yaml b/packages/kogito-data-index-postgresql-image/resources/incubator-kie-kogito-data-index-postgresql-image.yaml index 6baa79e3a5b..ee05a988133 100644 --- a/packages/kogito-data-index-postgresql-image/resources/incubator-kie-kogito-data-index-postgresql-image.yaml +++ b/packages/kogito-data-index-postgresql-image/resources/incubator-kie-kogito-data-index-postgresql-image.yaml @@ -20,7 +20,7 @@ schema_version: 1 name: "docker.io/apache/incubator-kie-kogito-data-index-ephemeral" version: "main" -from: "registry.access.redhat.com/ubi8/openjdk-17-runtime:1.19" +from: "registry.access.redhat.com/ubi8/openjdk-17-runtime:1.20" description: "Runtime image for Kogito Data Index Service for PostgreSQL persistence provider" labels: diff --git a/packages/kogito-data-index-postgresql-image/resources/modules/kogito-data-index-postgresql/module.yaml b/packages/kogito-data-index-postgresql-image/resources/modules/kogito-data-index-postgresql/module.yaml index 43c9fe6d9e9..ec56b961158 100644 --- a/packages/kogito-data-index-postgresql-image/resources/modules/kogito-data-index-postgresql/module.yaml +++ b/packages/kogito-data-index-postgresql-image/resources/modules/kogito-data-index-postgresql/module.yaml @@ -20,12 +20,10 @@ schema_version: 1 name: org.kie.kogito.dataindex.postgresql version: "main" -# see build-kogito-apps-components.sh script, responsible for build it. -# called by the Makefile before builds +# Relative to build/target/image/modules/, that's why the four `../` artifacts: - - path: /tmp/build/data-index-service-postgresql - dest: /home/kogito/bin - name: quarkus-app + - path: ../../../../app/target/quarkus-app + dest: /home/kogito/bin/quarkus-app execute: - script: configure diff --git a/packages/kogito-jit-runner-image/package.json b/packages/kogito-jit-runner-image/package.json index e0e51502041..dc1def35950 100644 --- a/packages/kogito-jit-runner-image/package.json +++ b/packages/kogito-jit-runner-image/package.json @@ -13,7 +13,7 @@ "url": "https://github.com/apache/incubator-kie-tools/issues" }, "scripts": { - "build:dev": "run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm copy-assets\" \"pnpm image:build\"", + "build:dev": "run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm mvn-build-app\" \"pnpm copy-assets\" \"pnpm image:build\"", "build:prod": "pnpm build:dev && pnpm image:test", "copy-assets": "run-script-os", "copy-assets:linux:darwin": "rimraf build && cp -R ./node_modules/@kie-tools/sonataflow-image-common/resources build && cp -R resources/* build", @@ -21,15 +21,19 @@ "copy-test-assets:linux:darwin": "cp -R test-resources/. build", "format": "prettier --write . --ignore-path=../../.prettierignore --ignore-path=../../.gitignore", "image:build": "run-script-os", - "image:build:darwin:linux": "pnpm setup:env make -C ./build build-kogito-app build", + "image:build:darwin:linux": "pnpm setup:env make -C ./build build", "image:build:win32": "echo \"Build skipped on Windows\"", - "image:test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env endToEndTests.run)\" --then \"mkdir -p build/target/test/results\" \"run-script-os\" --finally \"mkdir -p build/target/test/results && cp -R build/target/test/results dist-tests-e2e/\"", + "image:test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env endToEndTests.run)\" --then \"mkdir -p build/target/test/results\" \"run-script-os\" --finally \"mkdir -p build/target/test/results\" \"cp -R build/target/test/results dist-tests-e2e/\"", "image:test:darwin:linux": "pnpm copy-test-assets && pnpm setup:env make -C ./build test-image", "image:test:win32": "echo \"Tests skipped on Windows\"", "install": "node install.js && pnpm format", + "mvn-build-app": "run-script-os", + "mvn-build-app:linux:darwin": "mvn -am package -Dquarkus.package.type=fast-jar -Dquarkus.container-image.build=false -B -f ./resources/app/pom.xml", + "mvn-build-app:win32": "echo \"Build skipped on Windows\"", "setup:env": ". ./node_modules/@kie-tools/python-venv/venv/bin/activate && cross-env KOGITO_IMAGE_REGISTRY=$(build-env kogitoJitRunnerImage.registry) KOGITO_IMAGE_REGISTRY_ACCOUNT=$(build-env kogitoJitRunnerImage.account) KOGITO_IMAGE_NAME=$(build-env kogitoJitRunnerImage.name) KOGITO_IMAGE_TAG=$(build-env kogitoJitRunnerImage.buildTag) QUARKUS_PLATFORM_VERSION=$(build-env versions.quarkus) KOGITO_VERSION=$(build-env versions.kogito)" }, "devDependencies": { + "@kie-tools/maven-base": "workspace:*", "@kie-tools/python-venv": "workspace:*", "@kie-tools/root-env": "workspace:*", "@kie-tools/sonataflow-image-common": "workspace:*", diff --git a/packages/kogito-jit-runner-image/resources/app/pom.xml b/packages/kogito-jit-runner-image/resources/app/pom.xml new file mode 100644 index 00000000000..8c2fe83217c --- /dev/null +++ b/packages/kogito-jit-runner-image/resources/app/pom.xml @@ -0,0 +1,63 @@ + + + + 4.0.0 + + org.kie + kie-tools-maven-base + ${revision} + ../../node_modules/@kie-tools/maven-base/pom.xml + + + kogito-jit-runner-image-app + ${revision} + + KIE Tools :: Kogito JIT Runner Image :: App + Kogito JIT Runner Image Quarkus App + + + + org.kie.kogito + jitexecutor-runner + ${version.org.kie.kogito} + + + + + ${project.artifactId} + + + io.quarkus + quarkus-maven-plugin + + + + build + + + + + + + diff --git a/packages/kogito-jit-runner-image/resources/incubator-kie-kogito-jit-runner-image.yaml b/packages/kogito-jit-runner-image/resources/incubator-kie-kogito-jit-runner-image.yaml index e6b453f6112..323a6cc1d50 100644 --- a/packages/kogito-jit-runner-image/resources/incubator-kie-kogito-jit-runner-image.yaml +++ b/packages/kogito-jit-runner-image/resources/incubator-kie-kogito-jit-runner-image.yaml @@ -20,7 +20,7 @@ schema_version: 1 name: "docker.io/apache/incubator-kie-kogito-jit-runner" version: "main" -from: "registry.access.redhat.com/ubi8/openjdk-17-runtime:1.19" +from: "registry.access.redhat.com/ubi8/openjdk-17-runtime:1.20" description: "Runtime image for Kogito JIT Runner" labels: diff --git a/packages/kogito-jit-runner-image/resources/modules/kogito-jit-runner/module.yaml b/packages/kogito-jit-runner-image/resources/modules/kogito-jit-runner/module.yaml index db1d8ec4666..58355012470 100644 --- a/packages/kogito-jit-runner-image/resources/modules/kogito-jit-runner/module.yaml +++ b/packages/kogito-jit-runner-image/resources/modules/kogito-jit-runner/module.yaml @@ -20,12 +20,10 @@ schema_version: 1 name: org.kie.kogito.jit-runner version: "main" -# see build-kogito-apps-components.sh script, responsible for build it. -# called by the Makefile before builds +# Relative to build/target/image/modules/, that's why the four `../` artifacts: - - path: /tmp/build/jitexecutor-runner - dest: /home/kogito/bin - name: quarkus-app + - path: ../../../../app/target/quarkus-app + dest: /home/kogito/bin/quarkus-app execute: - script: configure diff --git a/packages/kogito-jobs-service-allinone-image/package.json b/packages/kogito-jobs-service-allinone-image/package.json index 00f2ec3aeb9..132b3b59afd 100644 --- a/packages/kogito-jobs-service-allinone-image/package.json +++ b/packages/kogito-jobs-service-allinone-image/package.json @@ -13,7 +13,7 @@ "url": "https://github.com/apache/incubator-kie-tools/issues" }, "scripts": { - "build:dev": "run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm copy-assets\" \"pnpm image:build\"", + "build:dev": "run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm mvn-build-app\" \"pnpm copy-assets\" \"pnpm image:build\"", "build:prod": "pnpm build:dev && pnpm image:test", "copy-assets": "run-script-os", "copy-assets:linux:darwin": "rimraf build && cp -R ./node_modules/@kie-tools/sonataflow-image-common/resources build && cp -R resources/* build", @@ -21,15 +21,19 @@ "copy-test-assets:linux:darwin": "cp -R test-resources/. build", "format": "prettier --write . --ignore-path=../../.prettierignore --ignore-path=../../.gitignore", "image:build": "run-script-os", - "image:build:darwin:linux": "pnpm setup:env make -C ./build build-kogito-app build", + "image:build:darwin:linux": "pnpm setup:env make -C ./build build", "image:build:win32": "echo \"Build skipped on Windows\"", - "image:test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env endToEndTests.run)\" --then \"mkdir -p build/target/test/results\" \"run-script-os\" --finally \"mkdir -p build/target/test/results && cp -R build/target/test/results dist-tests-e2e/\"", + "image:test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env endToEndTests.run)\" --then \"mkdir -p build/target/test/results\" \"run-script-os\" --finally \"mkdir -p build/target/test/results\" \"cp -R build/target/test/results dist-tests-e2e/\"", "image:test:darwin:linux": "pnpm copy-test-assets && pnpm setup:env make -C ./build test-image", "image:test:win32": "echo \"Tests skipped on Windows\"", "install": "node install.js && pnpm format", + "mvn-build-app": "run-script-os", + "mvn-build-app:linux:darwin": "mvn -am package -Dquarkus.package.type=fast-jar -Dquarkus.container-image.build=false -B -f ./resources/app/pom.xml", + "mvn-build-app:win32": "echo \"Build skipped on Windows\"", "setup:env": ". ./node_modules/@kie-tools/python-venv/venv/bin/activate && cross-env KOGITO_IMAGE_REGISTRY=$(build-env kogitoJobsServiceAllInOneImage.registry) KOGITO_IMAGE_REGISTRY_ACCOUNT=$(build-env kogitoJobsServiceAllInOneImage.account) KOGITO_IMAGE_NAME=$(build-env kogitoJobsServiceAllInOneImage.name) KOGITO_IMAGE_TAG=$(build-env kogitoJobsServiceAllInOneImage.buildTag) QUARKUS_PLATFORM_VERSION=$(build-env versions.quarkus) KOGITO_VERSION=$(build-env versions.kogito)" }, "devDependencies": { + "@kie-tools/maven-base": "workspace:*", "@kie-tools/python-venv": "workspace:*", "@kie-tools/root-env": "workspace:*", "@kie-tools/sonataflow-image-common": "workspace:*", diff --git a/packages/kogito-jobs-service-allinone-image/resources/app/ephemeral/pom.xml b/packages/kogito-jobs-service-allinone-image/resources/app/ephemeral/pom.xml new file mode 100644 index 00000000000..d0699004862 --- /dev/null +++ b/packages/kogito-jobs-service-allinone-image/resources/app/ephemeral/pom.xml @@ -0,0 +1,62 @@ + + + + 4.0.0 + + org.kie + kogito-jobs-service-image-parent + ${revision} + + + kogito-jobs-service-inmemory-image-app + ${revision} + + KIE Tools :: Kogito Jobs Service Inmemory Image :: App + Kogito Jobs Service Inmemory Image Quarkus App + + + + org.kie.kogito + jobs-service-inmemory + ${version.org.kie.kogito} + + + + + ${project.artifactId} + + + io.quarkus + quarkus-maven-plugin + + + + build + + + + + + + diff --git a/packages/kogito-jobs-service-allinone-image/resources/app/pom.xml b/packages/kogito-jobs-service-allinone-image/resources/app/pom.xml new file mode 100644 index 00000000000..d9ef6a0be43 --- /dev/null +++ b/packages/kogito-jobs-service-allinone-image/resources/app/pom.xml @@ -0,0 +1,44 @@ + + + + 4.0.0 + + org.kie + kie-tools-maven-base + ${revision} + ../../node_modules/@kie-tools/maven-base/pom.xml + + + kogito-jobs-service-image-parent + ${revision} + pom + + KIE Tools :: Kogito Jobs Service Image :: Parent + Kogito Kogito Jobs Service Image Parent + + + ephemeral + postgresql + + diff --git a/packages/kogito-jobs-service-allinone-image/resources/app/postgresql/pom.xml b/packages/kogito-jobs-service-allinone-image/resources/app/postgresql/pom.xml new file mode 100644 index 00000000000..3b329361104 --- /dev/null +++ b/packages/kogito-jobs-service-allinone-image/resources/app/postgresql/pom.xml @@ -0,0 +1,62 @@ + + + + 4.0.0 + + org.kie + kogito-jobs-service-image-parent + ${revision} + + + kogito-jobs-service-postgresql-image-app + ${revision} + + KIE Tools :: Kogito Jobs Service Postgresql Image :: App + Kogito Kogito Jobs Service Postgresql Image Quarkus App + + + + org.kie.kogito + jobs-service-postgresql + ${version.org.kie.kogito} + + + + + ${project.artifactId} + + + io.quarkus + quarkus-maven-plugin + + + + build + + + + + + + diff --git a/packages/kogito-jobs-service-allinone-image/resources/incubator-kie-kogito-jobs-service-allinone-image.yaml b/packages/kogito-jobs-service-allinone-image/resources/incubator-kie-kogito-jobs-service-allinone-image.yaml index eb63de643ee..2872d6a0132 100644 --- a/packages/kogito-jobs-service-allinone-image/resources/incubator-kie-kogito-jobs-service-allinone-image.yaml +++ b/packages/kogito-jobs-service-allinone-image/resources/incubator-kie-kogito-jobs-service-allinone-image.yaml @@ -20,7 +20,7 @@ schema_version: 1 name: "docker.io/apache/incubator-kie-kogito-jobs-service-ephemeral" version: "main" -from: "registry.access.redhat.com/ubi8/openjdk-17-runtime:1.19" +from: "registry.access.redhat.com/ubi8/openjdk-17-runtime:1.20" description: "Runtime image for Kogito Jobs Service with all available jdbc providers" labels: diff --git a/packages/kogito-jobs-service-allinone-image/resources/modules/kogito-jobs-service-all-in-one/module.yaml b/packages/kogito-jobs-service-allinone-image/resources/modules/kogito-jobs-service-all-in-one/module.yaml index 1963808b63d..244300c4d04 100644 --- a/packages/kogito-jobs-service-allinone-image/resources/modules/kogito-jobs-service-all-in-one/module.yaml +++ b/packages/kogito-jobs-service-allinone-image/resources/modules/kogito-jobs-service-all-in-one/module.yaml @@ -21,12 +21,12 @@ name: org.kie.kogito.jobs.service.allinone version: "main" artifacts: - - path: /tmp/build/jobs-service-inmemory-all-in-one + - path: ../../../../app/ephemeral/target/quarkus-app + dest: /home/kogito/bin/ephemeral/quarkus-app name: jobs-service-inmemory-all-in-one - dest: /home/kogito/bin/ephemeral - - path: /tmp/build/jobs-service-postgresql-all-in-one + - path: ../../../../app/postgresql/target/quarkus-app + dest: /home/kogito/bin/postgresql/quarkus-app name: jobs-service-postgresql-all-in-one - dest: /home/kogito/bin/postgresql execute: - script: configure diff --git a/packages/kogito-jobs-service-ephemeral-image/package.json b/packages/kogito-jobs-service-ephemeral-image/package.json index be288a815f4..bf9c76b7c8a 100644 --- a/packages/kogito-jobs-service-ephemeral-image/package.json +++ b/packages/kogito-jobs-service-ephemeral-image/package.json @@ -13,7 +13,7 @@ "url": "https://github.com/apache/incubator-kie-tools/issues" }, "scripts": { - "build:dev": "run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm copy-assets\" \"pnpm image:build\"", + "build:dev": "run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm mvn-build-app\" \"pnpm copy-assets\" \"pnpm image:build\"", "build:prod": "pnpm build:dev && pnpm image:test", "copy-assets": "run-script-os", "copy-assets:linux:darwin": "rimraf build && cp -R ./node_modules/@kie-tools/sonataflow-image-common/resources build && cp -R resources/* build", @@ -21,15 +21,19 @@ "copy-test-assets:linux:darwin": "cp -R test-resources/. build", "format": "prettier --write . --ignore-path=../../.prettierignore --ignore-path=../../.gitignore", "image:build": "run-script-os", - "image:build:darwin:linux": "pnpm setup:env make -C ./build build-kogito-app build", + "image:build:darwin:linux": "pnpm setup:env make -C ./build build", "image:build:win32": "echo \"Build skipped on Windows\"", - "image:test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env endToEndTests.run)\" --then \"mkdir -p build/target/test/results\" \"run-script-os\" --finally \"mkdir -p build/target/test/results && cp -R build/target/test/results dist-tests-e2e/\"", + "image:test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env endToEndTests.run)\" --then \"mkdir -p build/target/test/results\" \"run-script-os\" --finally \"mkdir -p build/target/test/results\" \"cp -R build/target/test/results dist-tests-e2e/\"", "image:test:darwin:linux": "pnpm copy-test-assets && pnpm setup:env make -C ./build test-image", "image:test:win32": "echo \"Tests skipped on Windows\"", "install": "node install.js && pnpm format", + "mvn-build-app": "run-script-os", + "mvn-build-app:linux:darwin": "mvn -am package -Dquarkus.package.type=fast-jar -Dquarkus.container-image.build=false -B -f ./resources/app/pom.xml", + "mvn-build-app:win32": "echo \"Build skipped on Windows\"", "setup:env": ". ./node_modules/@kie-tools/python-venv/venv/bin/activate && cross-env KOGITO_IMAGE_REGISTRY=$(build-env kogitoJobsServiceEphemeralImage.registry) KOGITO_IMAGE_REGISTRY_ACCOUNT=$(build-env kogitoJobsServiceEphemeralImage.account) KOGITO_IMAGE_NAME=$(build-env kogitoJobsServiceEphemeralImage.name) KOGITO_IMAGE_TAG=$(build-env kogitoJobsServiceEphemeralImage.buildTag) QUARKUS_PLATFORM_VERSION=$(build-env versions.quarkus) KOGITO_VERSION=$(build-env versions.kogito)" }, "devDependencies": { + "@kie-tools/maven-base": "workspace:*", "@kie-tools/python-venv": "workspace:*", "@kie-tools/root-env": "workspace:*", "@kie-tools/sonataflow-image-common": "workspace:*", diff --git a/packages/kogito-jobs-service-ephemeral-image/resources/app/pom.xml b/packages/kogito-jobs-service-ephemeral-image/resources/app/pom.xml new file mode 100644 index 00000000000..ab1afd2aba6 --- /dev/null +++ b/packages/kogito-jobs-service-ephemeral-image/resources/app/pom.xml @@ -0,0 +1,63 @@ + + + + 4.0.0 + + org.kie + kie-tools-maven-base + ${revision} + ../../node_modules/@kie-tools/maven-base/pom.xml + + + kogito-jobs-service-inmemory-image-app + ${revision} + + KIE Tools :: Kogito Jobs Service Inmemory Image :: App + Kogito Jobs Service Inmemory Image Quarkus App + + + + org.kie.kogito + jobs-service-inmemory + ${version.org.kie.kogito} + + + + + ${project.artifactId} + + + io.quarkus + quarkus-maven-plugin + + + + build + + + + + + + diff --git a/packages/kogito-jobs-service-ephemeral-image/resources/incubator-kie-kogito-jobs-service-ephemeral-image.yaml b/packages/kogito-jobs-service-ephemeral-image/resources/incubator-kie-kogito-jobs-service-ephemeral-image.yaml index 92536ef40f5..f622fec9eed 100644 --- a/packages/kogito-jobs-service-ephemeral-image/resources/incubator-kie-kogito-jobs-service-ephemeral-image.yaml +++ b/packages/kogito-jobs-service-ephemeral-image/resources/incubator-kie-kogito-jobs-service-ephemeral-image.yaml @@ -20,7 +20,7 @@ schema_version: 1 name: "docker.io/apache/incubator-kie-kogito-jobs-service-ephemeral" version: "main" -from: "registry.access.redhat.com/ubi8/openjdk-17-runtime:1.19" +from: "registry.access.redhat.com/ubi8/openjdk-17-runtime:1.20" description: "Runtime image for Kogito in memory Jobs Service" labels: diff --git a/packages/kogito-jobs-service-ephemeral-image/resources/modules/added/kogito-app-launch.sh b/packages/kogito-jobs-service-ephemeral-image/resources/modules/kogito-jobs-service-ephemeral/added/kogito-app-launch.sh similarity index 96% rename from packages/kogito-jobs-service-ephemeral-image/resources/modules/added/kogito-app-launch.sh rename to packages/kogito-jobs-service-ephemeral-image/resources/modules/kogito-jobs-service-ephemeral/added/kogito-app-launch.sh index 66b2da357fe..0f470cac6d3 100644 --- a/packages/kogito-jobs-service-ephemeral-image/resources/modules/added/kogito-app-launch.sh +++ b/packages/kogito-jobs-service-ephemeral-image/resources/modules/kogito-jobs-service-ephemeral/added/kogito-app-launch.sh @@ -45,4 +45,4 @@ DYNAMIC_RESOURCES_OPTS="$(${JBOSS_CONTAINER_JAVA_JVM_MODULE}/java-default-option exec java ${SHOW_JVM_SETTINGS} ${DYNAMIC_RESOURCES_OPTS} ${JAVA_OPTIONS} ${KOGITO_JOBS_PROPS} ${CUSTOM_TRUSTSTORE_ARGS} \ -Dquarkus.http.host=0.0.0.0 \ -Dquarkus.http.port=8080 \ - -jar "${KOGITO_HOME}"/bin/ephemeral/quarkus-app/quarkus-run.jar + -jar "${KOGITO_HOME}"/bin/quarkus-app/quarkus-run.jar diff --git a/packages/kogito-jobs-service-ephemeral-image/resources/modules/configure b/packages/kogito-jobs-service-ephemeral-image/resources/modules/kogito-jobs-service-ephemeral/configure similarity index 100% rename from packages/kogito-jobs-service-ephemeral-image/resources/modules/configure rename to packages/kogito-jobs-service-ephemeral-image/resources/modules/kogito-jobs-service-ephemeral/configure diff --git a/packages/kogito-jobs-service-ephemeral-image/resources/modules/module.yaml b/packages/kogito-jobs-service-ephemeral-image/resources/modules/kogito-jobs-service-ephemeral/module.yaml similarity index 81% rename from packages/kogito-jobs-service-ephemeral-image/resources/modules/module.yaml rename to packages/kogito-jobs-service-ephemeral-image/resources/modules/kogito-jobs-service-ephemeral/module.yaml index b320c789219..dc0020ddada 100644 --- a/packages/kogito-jobs-service-ephemeral-image/resources/modules/module.yaml +++ b/packages/kogito-jobs-service-ephemeral-image/resources/modules/kogito-jobs-service-ephemeral/module.yaml @@ -20,12 +20,10 @@ schema_version: 1 name: org.kie.kogito.jobs.service.ephemeral version: "main" -# see build-kogito-apps-components.sh script, responsible for build it. -# called by the Makefile before builds +# Relative to build/target/image/modules/, that's why the four `../` artifacts: - - path: /tmp/build/jobs-service-inmemory - dest: /home/kogito/bin/ephemeral - name: quarkus-app + - path: ../../../../app/target/quarkus-app + dest: /home/kogito/bin/quarkus-app execute: - script: configure diff --git a/packages/kogito-jobs-service-ephemeral-image/test-resources/tests/features/kogito-jobs-service-ephemeral.feature b/packages/kogito-jobs-service-ephemeral-image/test-resources/tests/features/kogito-jobs-service-ephemeral.feature index bb0102bc084..f9458b09d65 100644 --- a/packages/kogito-jobs-service-ephemeral-image/test-resources/tests/features/kogito-jobs-service-ephemeral.feature +++ b/packages/kogito-jobs-service-ephemeral-image/test-resources/tests/features/kogito-jobs-service-ephemeral.feature @@ -30,13 +30,13 @@ Feature: Kogito-jobs-service-ephemeral feature. Scenario: Verify if the application jar exists When container is started with command bash - Then run sh -c 'ls /home/kogito/bin/ephemeral/quarkus-app/quarkus-run.jar' in container and immediately check its output for /home/kogito/bin/ephemeral/quarkus-app/quarkus-run.jar + Then run sh -c 'ls /home/kogito/bin/quarkus-app/quarkus-run.jar' in container and immediately check its output for /home/kogito/bin/quarkus-app/quarkus-run.jar Scenario: Verify if the debug is correctly enabled with the ephemeral jar When container is started with env | variable | value | | SCRIPT_DEBUG | true | - Then container log should contain -Dquarkus.http.host=0.0.0.0 -Dquarkus.http.port=8080 -jar /home/kogito/bin/ephemeral/quarkus-app/quarkus-run.jar + Then container log should contain -Dquarkus.http.host=0.0.0.0 -Dquarkus.http.port=8080 -jar /home/kogito/bin/quarkus-app/quarkus-run.jar And container log should contain started in And container log should not contain Application failed to start diff --git a/packages/kogito-jobs-service-postgresql-image/package.json b/packages/kogito-jobs-service-postgresql-image/package.json index 788ea1912a6..cb22dbfa6f1 100644 --- a/packages/kogito-jobs-service-postgresql-image/package.json +++ b/packages/kogito-jobs-service-postgresql-image/package.json @@ -13,7 +13,7 @@ "url": "https://github.com/apache/incubator-kie-tools/issues" }, "scripts": { - "build:dev": "run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm copy-assets\" \"pnpm image:build\"", + "build:dev": "run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm mvn-build-app\" \"pnpm copy-assets\" \"pnpm image:build\"", "build:prod": "pnpm build:dev && pnpm image:test", "copy-assets": "run-script-os", "copy-assets:linux:darwin": "rimraf build && cp -R ./node_modules/@kie-tools/sonataflow-image-common/resources build && cp -R resources/* build", @@ -21,15 +21,19 @@ "copy-test-assets:linux:darwin": "cp -R test-resources/. build", "format": "prettier --write . --ignore-path=../../.prettierignore --ignore-path=../../.gitignore", "image:build": "run-script-os", - "image:build:darwin:linux": "pnpm setup:env make -C ./build build-kogito-app build", + "image:build:darwin:linux": "pnpm setup:env make -C ./build build", "image:build:win32": "echo \"Build skipped on Windows\"", - "image:test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env endToEndTests.run)\" --then \"mkdir -p build/target/test/results\" \"run-script-os\" --finally \"mkdir -p build/target/test/results && cp -R build/target/test/results dist-tests-e2e/\"", + "image:test": "run-script-if --ignore-errors \"$(build-env tests.ignoreFailures)\" --bool \"$(build-env endToEndTests.run)\" --then \"mkdir -p build/target/test/results\" \"run-script-os\" --finally \"mkdir -p build/target/test/results\" \"cp -R build/target/test/results dist-tests-e2e/\"", "image:test:darwin:linux": "pnpm copy-test-assets && pnpm setup:env make -C ./build test-image", "image:test:win32": "echo \"Tests skipped on Windows\"", "install": "node install.js && pnpm format", + "mvn-build-app": "run-script-os", + "mvn-build-app:linux:darwin": "mvn -am package -Dquarkus.package.type=fast-jar -Dquarkus.container-image.build=false -B -f ./resources/app/pom.xml", + "mvn-build-app:win32": "echo \"Build skipped on Windows\"", "setup:env": ". ./node_modules/@kie-tools/python-venv/venv/bin/activate && cross-env KOGITO_IMAGE_REGISTRY=$(build-env kogitoJobsServicePostgresqlImage.registry) KOGITO_IMAGE_REGISTRY_ACCOUNT=$(build-env kogitoJobsServicePostgresqlImage.account) KOGITO_IMAGE_NAME=$(build-env kogitoJobsServicePostgresqlImage.name) KOGITO_IMAGE_TAG=$(build-env kogitoJobsServicePostgresqlImage.buildTag) QUARKUS_PLATFORM_VERSION=$(build-env versions.quarkus) KOGITO_VERSION=$(build-env versions.kogito)" }, "devDependencies": { + "@kie-tools/maven-base": "workspace:*", "@kie-tools/python-venv": "workspace:*", "@kie-tools/root-env": "workspace:*", "@kie-tools/sonataflow-image-common": "workspace:*", diff --git a/packages/kogito-jobs-service-postgresql-image/resources/app/pom.xml b/packages/kogito-jobs-service-postgresql-image/resources/app/pom.xml new file mode 100644 index 00000000000..61e48009f51 --- /dev/null +++ b/packages/kogito-jobs-service-postgresql-image/resources/app/pom.xml @@ -0,0 +1,63 @@ + + + + 4.0.0 + + org.kie + kie-tools-maven-base + ${revision} + ../../node_modules/@kie-tools/maven-base/pom.xml + + + kogito-jobs-service-postgresql-image-app + ${revision} + + KIE Tools :: Kogito Jobs Service Postgresql Image :: App + Kogito Kogito Jobs Service Postgresql Image Quarkus App + + + + org.kie.kogito + jobs-service-postgresql + ${version.org.kie.kogito} + + + + + ${project.artifactId} + + + io.quarkus + quarkus-maven-plugin + + + + build + + + + + + + diff --git a/packages/kogito-jobs-service-postgresql-image/resources/incubator-kie-kogito-jobs-service-postgresql-image.yaml b/packages/kogito-jobs-service-postgresql-image/resources/incubator-kie-kogito-jobs-service-postgresql-image.yaml index 8458b48a849..f2ccc8bc2c5 100644 --- a/packages/kogito-jobs-service-postgresql-image/resources/incubator-kie-kogito-jobs-service-postgresql-image.yaml +++ b/packages/kogito-jobs-service-postgresql-image/resources/incubator-kie-kogito-jobs-service-postgresql-image.yaml @@ -20,7 +20,7 @@ schema_version: 1 name: "docker.io/apache/incubator-kie-kogito-jobs-service-postgresql" version: "main" -from: "registry.access.redhat.com/ubi8/openjdk-17-runtime:1.19" +from: "registry.access.redhat.com/ubi8/openjdk-17-runtime:1.20" description: "Runtime image for Kogito Jobs Service based on Postgresql" labels: diff --git a/packages/kogito-jobs-service-postgresql-image/resources/modules/kogito-jobs-service-postgresql/added/kogito-app-launch.sh b/packages/kogito-jobs-service-postgresql-image/resources/modules/kogito-jobs-service-postgresql/added/kogito-app-launch.sh index 4ee5b43d62b..0f470cac6d3 100644 --- a/packages/kogito-jobs-service-postgresql-image/resources/modules/kogito-jobs-service-postgresql/added/kogito-app-launch.sh +++ b/packages/kogito-jobs-service-postgresql-image/resources/modules/kogito-jobs-service-postgresql/added/kogito-app-launch.sh @@ -45,4 +45,4 @@ DYNAMIC_RESOURCES_OPTS="$(${JBOSS_CONTAINER_JAVA_JVM_MODULE}/java-default-option exec java ${SHOW_JVM_SETTINGS} ${DYNAMIC_RESOURCES_OPTS} ${JAVA_OPTIONS} ${KOGITO_JOBS_PROPS} ${CUSTOM_TRUSTSTORE_ARGS} \ -Dquarkus.http.host=0.0.0.0 \ -Dquarkus.http.port=8080 \ - -jar "${KOGITO_HOME}"/bin/postgresql/quarkus-app/quarkus-run.jar + -jar "${KOGITO_HOME}"/bin/quarkus-app/quarkus-run.jar diff --git a/packages/kogito-jobs-service-postgresql-image/resources/modules/kogito-jobs-service-postgresql/module.yaml b/packages/kogito-jobs-service-postgresql-image/resources/modules/kogito-jobs-service-postgresql/module.yaml index 6bdc6b692cc..c5fcb2a5bc3 100644 --- a/packages/kogito-jobs-service-postgresql-image/resources/modules/kogito-jobs-service-postgresql/module.yaml +++ b/packages/kogito-jobs-service-postgresql-image/resources/modules/kogito-jobs-service-postgresql/module.yaml @@ -20,12 +20,10 @@ schema_version: 1 name: org.kie.kogito.jobs.service.postgresql version: "main" -# see build-kogito-apps-components.sh script, responsible for build it. -# called by the Makefile before builds +# Relative to build/target/image/modules/, that's why the four `../` artifacts: - - path: /tmp/build/jobs-service-postgresql - dest: /home/kogito/bin/postgresql - name: quarkus-app + - path: ../../../../app/target/quarkus-app + dest: /home/kogito/bin/quarkus-app execute: - script: configure diff --git a/packages/kogito-jobs-service-postgresql-image/test-resources/tests/features/kogito-jobs-service-postgresql.feature b/packages/kogito-jobs-service-postgresql-image/test-resources/tests/features/kogito-jobs-service-postgresql.feature index 4c601a9d361..c8aa91d8fb8 100644 --- a/packages/kogito-jobs-service-postgresql-image/test-resources/tests/features/kogito-jobs-service-postgresql.feature +++ b/packages/kogito-jobs-service-postgresql-image/test-resources/tests/features/kogito-jobs-service-postgresql.feature @@ -30,7 +30,7 @@ Feature: Kogito-jobs-service-postgresql feature. Scenario: Verify if the application jar exists When container is started with command bash - Then run sh -c 'ls /home/kogito/bin/postgresql/quarkus-app/quarkus-run.jar' in container and immediately check its output for /home/kogito/bin/postgresql/quarkus-app/quarkus-run.jar + Then run sh -c 'ls /home/kogito/bin/quarkus-app/quarkus-run.jar' in container and immediately check its output for /home/kogito/bin/quarkus-app/quarkus-run.jar Scenario: verify if container starts as expected When container is started with env @@ -41,7 +41,7 @@ Feature: Kogito-jobs-service-postgresql feature. | QUARKUS_DATASOURCE_USERNAME | test | | QUARKUS_DATASOURCE_PASSWORD | 123456 | | QUARKUS_DATASOURCE_JDBC_URL | jdbc:postgresql://10.11.12.13:5432/hibernate_orm_test | - Then container log should contain -Dquarkus.http.host=0.0.0.0 -Dquarkus.http.port=8080 -jar /home/kogito/bin/postgresql/quarkus-app/quarkus-run.jar + Then container log should contain -Dquarkus.http.host=0.0.0.0 -Dquarkus.http.port=8080 -jar /home/kogito/bin/quarkus-app/quarkus-run.jar And container log should contain QUARKUS_DATASOURCE_DB_KIND=postgresql And container log should contain QUARKUS_DATASOURCE_USERNAME=test And container log should contain QUARKUS_DATASOURCE_PASSWORD=123456 diff --git a/packages/kogito-task-console/Containerfile b/packages/kogito-task-console/Containerfile deleted file mode 100644 index 6c8f1034d94..00000000000 --- a/packages/kogito-task-console/Containerfile +++ /dev/null @@ -1,51 +0,0 @@ -# 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. - -FROM --platform=linux/amd64 registry.access.redhat.com/ubi9/ubi-minimal:9.4 - -ARG KOGITO_TASK_CONSOLE_PORT=8080 - -ENV RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_ENV_MODE="PROD" - -COPY entrypoint.sh dist-dev/image-env-to-json-standalone dist-dev/EnvJson.schema.json /tmp/ - -RUN microdnf --disableplugin=subscription-manager -y install httpd \ - && microdnf --disableplugin=subscription-manager clean all \ - && echo "Mutex posixsem" >> /etc/httpd/conf/httpd.conf \ - && sed -i -e "/#ServerName www.example.com:80/aHeader set Content-Security-Policy \"frame-ancestors 'self';\"" /etc/httpd/conf/httpd.conf \ - && sed -i -e 's/Options Indexes FollowSymLinks/Options -Indexes +FollowSymLinks/' /etc/httpd/conf/httpd.conf \ - && sed -i "s/Listen 80/Listen ${KOGITO_TASK_CONSOLE_PORT}/g" /etc/httpd/conf/httpd.conf \ - && sed -i "s/#ServerName www.example.com:80/ServerName 127.0.0.1:${KOGITO_TASK_CONSOLE_PORT}/g" /etc/httpd/conf/httpd.conf \ - && sed -i '$ a ServerTokens Prod' /etc/httpd/conf/httpd.conf \ - && sed -i '$ a ServerSignature Off' /etc/httpd/conf/httpd.conf \ - && sed -i -e '//a RewriteEngine on\n RewriteCond %{REQUEST_FILENAME} -f [OR]\n RewriteCond %{REQUEST_FILENAME} -d\n RewriteRule ^ - [L]\n RewriteRule ^ index.html [L]' /etc/httpd/conf/httpd.conf \ - && chmod -R g=u /etc/httpd/conf \ - && mkdir /task-console \ - && mv -t /task-console /tmp/entrypoint.sh /tmp/image-env-to-json-standalone /tmp/EnvJson.schema.json \ - && chgrp -R 0 /var/log/httpd /var/run/httpd /var/www/html /task-console \ - && chmod -R g=u /var/log/httpd /var/run/httpd /var/www/html /task-console \ - && chmod +x /task-console/entrypoint.sh /task-console/image-env-to-json-standalone - -COPY dist-dev/runtime-tools-task-console-webapp /task-console/app - -RUN if [ -f /task-console/app/env.json ]; then chmod a+w /task-console/app/env.json; fi - -EXPOSE ${KOGITO_TASK_CONSOLE_PORT} - -USER 1000 - -ENTRYPOINT [ "/task-console/entrypoint.sh" ] diff --git a/packages/kogito-task-console/README.md b/packages/kogito-task-console/README.md deleted file mode 100644 index 23229fca149..00000000000 --- a/packages/kogito-task-console/README.md +++ /dev/null @@ -1,138 +0,0 @@ - - -# kogito-task-console - -This package contains the `Containerfile/Dockerfile` and scripts to build a container image for Task Console. It also generated a JSON Schema for the `env.json` file, enabling it to be validated. - -## Additional requirements - -- docker - -## Build - -- Enable the image to be built: - - ```bash - export KIE_TOOLS_BUILD__buildContainerImages=true - ``` - -- (Optional) The image name and tags can be customized by setting the following environment variables: - - ```bash - export KOGITO_TASK_CONSOLE__registry= - export KOGITO_TASK_CONSOLE__account= - export KOGITO_TASK_CONSOLE__name= - export KOGITO_TASK_CONSOLE__buildTag= - ``` - - > Default values can be found [here](./env/index.js). - -- After optionally setting up the environment variables, run the following in the root folder of the repository to build the package: - - ```bash - pnpm -F @kie-tools/kogito-task-console... build:prod - ``` - -- Then check if the image is correctly stored: - - ```bash - docker images - ``` - -## Run - -- Start up a clean container with: - - ```bash - docker run -t -p 8080:8080 -i --rm docker.io/apache/incubator-kie-kogito-task-console:main - ``` - - Task Console will be up at http://localhost:8080 - -## Customization - -1. Run a container with custom environment variables: - - [comment]: <> (//TODO: Use EnvJson.schema.json to generate this documentation somehow.. See https://github.com/kiegroup/kie-issues/issues/16) - - | Name | Description | Default | - | :---------------------------------------------------------: | :-----------------------------------------------------------: | :-------------------------------------------------------------------------------------: | - | `RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_ENV_MODE` | Env Mode: "PROD" or "DEV". PROD enables Keycloak integration. | "PROD" | - | `RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_APP_NAME` | Task Console app name. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_APP_VERSION` | Task Console app version. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_TASK_STATES_LIST` | Pre-selected task states. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_TASK_ACTIVE_STATES_LIST` | Pre-selected task active states. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `RUNTIME_TOOLS_TASK_CONSOLE_DATA_INDEX_ENDPOINT` | The URL that points to the Data Index service. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_DISABLE_HEALTH_CHECK` | Disables Keycloak health-check. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_UPDATE_TOKEN_VALIDITY` | Update token validity in minutes. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_HEALTH_CHECK_URL` | Keycloak health-check URL. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_REALM` | Keycloak realm name. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_URL` | Keycloak auth URL. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - | `KOGITO_CONSOLES_KEYCLOAK_CLIENT_ID` | Keycloak Client ID. | See [ defaultEnvJson.js ](../runtime-tools-task-console-webapp/build/defaultEnvJson.js) | - - ### Examples - - 1. Using a different Data Index Service. - - ```bash - docker run -t -p 8080:8080 -e RUNTIME_TOOLS_TASK_CONSOLE_DATA_INDEX_ENDPOINT= -i --rm docker.io/apache/incubator-kie-kogito-task-console:main - ``` - - _NOTE: Replace `docker` with `podman` if necessary._ - -2. Write a custom `Containerfile/Dockerfile` from the image: - - ```docker - FROM docker.io/apache/incubator-kie-kogito-task-console:main - - ENV RUNTIME_TOOLS_TASK_CONSOLE_DATA_INDEX_ENDPOINT= - ``` - -3. Create the application from the image in OpenShift and set the deployment environment variable right from the OpenShift UI. - -## Custom Port - -The port used internally on the container can be changed: - -When building, set the `KOGITO_TASK_CONSOLE__port` environment variable to any port you want, and the Containerfile will be built using that port. - ---- - -Apache KIE (incubating) is an effort undergoing incubation at The Apache Software -Foundation (ASF), sponsored by the name of Apache Incubator. Incubation is -required of all newly accepted projects until a further review indicates that -the infrastructure, communications, and decision making process have stabilized -in a manner consistent with other successful ASF projects. While incubation -status is not necessarily a reflection of the completeness or stability of the -code, it does indicate that the project has yet to be fully endorsed by the ASF. - -Some of the incubating project’s releases may not be fully compliant with ASF -policy. For example, releases may have incomplete or un-reviewed licensing -conditions. What follows is a list of known issues the project is currently -aware of (note that this list, by definition, is likely to be incomplete): - -- Hibernate, an LGPL project, is being used. Hibernate is in the process of - relicensing to ASL v2 -- Some files, particularly test files, and those not supporting comments, may - be missing the ASF Licensing Header - -If you are planning to incorporate this work into your product/project, please -be aware that you will need to conduct a thorough licensing review to determine -the overall implications of including this work. For the current status of this -project through the Apache Incubator visit: -https://incubator.apache.org/projects/kie.html diff --git a/packages/kogito-task-console/entrypoint.sh b/packages/kogito-task-console/entrypoint.sh deleted file mode 100644 index a68f59c1593..00000000000 --- a/packages/kogito-task-console/entrypoint.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -# -# 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. -# - -# Copying the Task Console assets here is essential for when the container is running with the readOnlyRootFilesystem flag. -# But, just like any other directory modified during runtime, the /var/www/html must be a mounted volume in the container in this case. -cp -R /task-console/app/* /var/www/html - -/task-console/image-env-to-json-standalone --directory /var/www/html --json-schema /task-console/EnvJson.schema.json - -httpd -D FOREGROUND diff --git a/packages/kogito-task-console/env/index.js b/packages/kogito-task-console/env/index.js deleted file mode 100644 index 07cac3a780b..00000000000 --- a/packages/kogito-task-console/env/index.js +++ /dev/null @@ -1,59 +0,0 @@ -/* - * 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. - */ - -const { varsWithName, composeEnv, getOrDefault } = require("@kie-tools-scripts/build-env"); - -const rootEnv = require("@kie-tools/root-env/env"); - -module.exports = composeEnv([rootEnv], { - vars: varsWithName({ - KOGITO_TASK_CONSOLE__registry: { - default: "docker.io", - description: "E.g., `docker.io` or `quay.io`.", - }, - KOGITO_TASK_CONSOLE__account: { - default: "apache", - description: "E.g,. `apache` or `kie-tools-bot`", - }, - KOGITO_TASK_CONSOLE__name: { - default: "incubator-kie-kogito-task-console", - description: "Name of the image itself.", - }, - KOGITO_TASK_CONSOLE__buildTag: { - default: rootEnv.env.root.streamName, - description: "Tag version of this image. E.g., `main` or `10.0.x` or `10.0.0", - }, - KOGITO_TASK_CONSOLE__port: { - default: 8080, - description: "The internal container port.", - }, - }), - get env() { - return { - kogitoTaskConsole: { - registry: getOrDefault(this.vars.KOGITO_TASK_CONSOLE__registry), - account: getOrDefault(this.vars.KOGITO_TASK_CONSOLE__account), - name: getOrDefault(this.vars.KOGITO_TASK_CONSOLE__name), - buildTag: getOrDefault(this.vars.KOGITO_TASK_CONSOLE__buildTag), - port: getOrDefault(this.vars.KOGITO_TASK_CONSOLE__port), - version: require("../package.json").version, - }, - }; - }, -}); diff --git a/packages/kogito-task-console/package.json b/packages/kogito-task-console/package.json deleted file mode 100644 index 10273fd9fcf..00000000000 --- a/packages/kogito-task-console/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "private": true, - "name": "@kie-tools/kogito-task-console", - "version": "0.0.0", - "description": "", - "license": "Apache-2.0", - "homepage": "https://github.com/apache/incubator-kie-tools", - "repository": { - "type": "git", - "url": "https://github.com/apache/incubator-kie-tools.git" - }, - "bugs": { - "url": "https://github.com/apache/incubator-kie-tools/issues" - }, - "scripts": { - "build:dev": "pnpm cleanup && pnpm env-json:schema:generate && pnpm copy:assets && run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm image:docker:build\"", - "build:prod": "pnpm cleanup && pnpm env-json:schema:generate && pnpm copy:assets && run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm image:docker:build\"", - "cleanup": "rimraf dist-dev && mkdir dist-dev", - "copy:assets": "pnpm copy:webapp-assets && pnpm copy:image-env-to-json", - "copy:image-env-to-json": "run-script-os", - "copy:image-env-to-json:linux:darwin": "cp ./node_modules/@kie-tools/image-env-to-json/dist/linux/image-env-to-json-standalone ./dist-dev/", - "copy:image-env-to-json:win32": "pnpm powershell \"Copy-Item ./node_modules/@kie-tools/image-env-to-json/dist/linux/image-env-to-json-standalone ./dist-dev/\"", - "copy:webapp-assets": "run-script-os", - "copy:webapp-assets:linux:darwin": "cp -R ./node_modules/@kie-tools/runtime-tools-task-console-webapp/dist/ ./dist-dev/runtime-tools-task-console-webapp", - "copy:webapp-assets:win32": "pnpm powershell \"Copy-Item -R ./node_modules/@kie-tools/runtime-tools-task-console-webapp/dist/ ./dist-dev/runtime-tools-task-console-webapp\"", - "env-json:schema:generate": "ts-json-schema-generator --tsconfig ./node_modules/@kie-tools/runtime-tools-task-console-webapp/tsconfig.json --path ./node_modules/@kie-tools/runtime-tools-task-console-webapp/src/env/EnvJson.ts --type EnvJson --id EnvJson --out ./dist-dev/EnvJson.schema.json", - "image:docker:build": "kie-tools--image-builder build -r \"$(build-env kogitoTaskConsole.registry)\" -a \"$(build-env kogitoTaskConsole.account)\" -n \"$(build-env kogitoTaskConsole.name)\" -t \"$(build-env kogitoTaskConsole.buildTag)\" --build-arg KOGITO_TASK_CONSOLE_PORT=\"$(build-env kogitoTaskConsole.port)\"" - }, - "devDependencies": { - "@kie-tools/image-builder": "workspace:*", - "@kie-tools/image-env-to-json": "workspace:*", - "@kie-tools/root-env": "workspace:*", - "@kie-tools/runtime-tools-task-console-webapp": "workspace:*", - "rimraf": "^3.0.2", - "run-script-os": "^1.1.6", - "ts-json-schema-generator": "^1.1.2" - } -} diff --git a/packages/maven-base/index.js b/packages/maven-base/index.js index 54fa2ee5da0..5860a133b9e 100755 --- a/packages/maven-base/index.js +++ b/packages/maven-base/index.js @@ -146,10 +146,10 @@ module.exports = { /** * Writes to `.mvn/maven.config` idempotently, preserving what was there before this function was called. * - * @param mavenConfigString New-line-separated string containing arguments to the `mvn` command. + * @param pkgSpecificMvnConfigString New-line-separated string containing arguments to the `mvn` command. * @param args An object with a `ignoreDefault: boolean` property. */ - setupMavenConfigFile: (mavenConfigString, args) => { + setupMavenConfigFile: (pkgSpecificMvnConfigString, args) => { console.info(`[maven-base] Configuring Maven through .mvn/maven.config...`); console.time(`[maven-base] Configuring Maven through .mvn/maven.config...`); @@ -171,25 +171,21 @@ module.exports = { console.info(`${originalMvnConfigString}` || ""); fs.writeFileSync(MVN_CONFIG_ORIGINAL_FILE_PATH, originalMvnConfigString); - const trimmedMavenConfigString = mavenConfigString + const sanitizedPkgSpecificMvnConfigString = pkgSpecificMvnConfigString .trim() .split("\n") - .map((l) => l.trim()) + .map((line) => line.trim()) .join("\n"); - const newMavenConfigString = `${originalMvnConfigString ? `\n${originalMvnConfigString}\n` : ``} -${trimmedMavenConfigString.trim()}`; + const newMvnConfigString = + (args?.ignoreDefault ? "" : `${DEFAULT_MAVEN_CONFIG}\n`) + + (sanitizedPkgSpecificMvnConfigString ? `${sanitizedPkgSpecificMvnConfigString}\n` : "") + + (originalMvnConfigString ? `${originalMvnConfigString}\n` : ""); console.info(`[maven-base] Writing '${MVN_CONFIG_FILE_PATH}'...`); - console.info(newMavenConfigString); + console.info(newMvnConfigString); - const defaultMavenConfigString = args?.ignoreDefault - ? "" - : ` - -${DEFAULT_MAVEN_CONFIG}`; - - fs.writeFileSync(MVN_CONFIG_FILE_PATH, `${newMavenConfigString}${defaultMavenConfigString}`); + fs.writeFileSync(MVN_CONFIG_FILE_PATH, newMvnConfigString); console.timeEnd(`[maven-base] Configuring Maven through .mvn/maven.config...`); }, }; diff --git a/packages/maven-base/pom.xml b/packages/maven-base/pom.xml index fbc338fa3c0..cb4ad84b499 100644 --- a/packages/maven-base/pom.xml +++ b/packages/maven-base/pom.xml @@ -123,7 +123,7 @@ 1.6.0 - 999-20240912-SNAPSHOT + 999-20241016-SNAPSHOT 3.8.6 diff --git a/packages/maven-m2-repo-via-http-image/settings.xml.envsubst b/packages/maven-m2-repo-via-http-image/settings.xml.envsubst index 8cc22d223db..8fecb67bac4 100644 --- a/packages/maven-m2-repo-via-http-image/settings.xml.envsubst +++ b/packages/maven-m2-repo-via-http-image/settings.xml.envsubst @@ -25,10 +25,12 @@ true never + ignore true never + ignore @@ -42,10 +44,12 @@ true never + ignore true never + ignore diff --git a/packages/root-env/env/index.js b/packages/root-env/env/index.js index ee08193205f..510050b39a3 100644 --- a/packages/root-env/env/index.js +++ b/packages/root-env/env/index.js @@ -70,7 +70,7 @@ module.exports = composeEnv([], { }, /* (begin) This part of the file is referenced in `scripts/update-kogito-version` */ KOGITO_RUNTIME_version: { - default: "999-20240912-SNAPSHOT", + default: "999-20241016-SNAPSHOT", description: "Kogito version to be used on dependency declaration.", }, /* (end) */ diff --git a/packages/runtime-tools-components/src/common/components/FormNotification/FormNotification.tsx b/packages/runtime-tools-components/src/common/components/FormNotification/FormNotification.tsx index 3d6449c9899..468f7fbceb0 100644 --- a/packages/runtime-tools-components/src/common/components/FormNotification/FormNotification.tsx +++ b/packages/runtime-tools-components/src/common/components/FormNotification/FormNotification.tsx @@ -17,7 +17,7 @@ * under the License. */ -import React, { useState } from "react"; +import React, { useState, useMemo } from "react"; import { Alert, AlertActionCloseButton, AlertActionLink } from "@patternfly/react-core/dist/js/components/Alert"; import { componentOuiaProps, OUIAProps } from "../../ouiaTools"; @@ -42,6 +42,10 @@ export const FormNotification: React.FC = ({ notification const variant = notification.type === "error" ? "danger" : "success"; const [showDetails, setShowDetails] = useState(false); + const content = useMemo( + () => showDetails && notification.details &&

{notification.details}

, + [showDetails, notification.details] + ); return ( = ({ notification actionClose={} {...componentOuiaProps(ouiaId, "form-notification-alert", ouiaSafe)} > - {showDetails && notification.details &&

{notification.details}

} + {content}
); }; diff --git a/packages/runtime-tools-consoles-helm-chart/README.md b/packages/runtime-tools-consoles-helm-chart/README.md index 753c17c4152..f26136b9c6f 100644 --- a/packages/runtime-tools-consoles-helm-chart/README.md +++ b/packages/runtime-tools-consoles-helm-chart/README.md @@ -17,7 +17,7 @@ # runtime-tools-consoles-helm-chart -This chart can be used to deploy Task and Management consoles images on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. +This chart can be used to deploy the Management Console image on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. ## Additional requirements @@ -27,7 +27,6 @@ This chart can be used to deploy Task and Management consoles images on a [Kuber ## Components - Management Console -- Task Console ## Installing the Chart @@ -55,12 +54,6 @@ In order to get runtime-tools-consoles running you need to run these commands: export CONTAINER_PORT=$(kubectl get pod --namespace default $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") echo "Management Console URL: http://127.0.0.1:8081" kubectl --namespace default port-forward $POD_NAME 8081:$CONTAINER_PORT - -2. Run the following commands in a separate terminal to port-forward Task Console application: - export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/component=task-console,app.kubernetes.io/instance=runtime-tools-consoles" -o jsonpath="{.items[0].metadata.name}") - export CONTAINER_PORT=$(kubectl get pod --namespace default $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") - echo "Task Console URL: http://127.0.0.1:8080" - kubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT ``` ### Minikube install @@ -86,7 +79,6 @@ Run the following commands: export MINIKUBE_IP=$(minikube ip) echo "\n# Minikube Runtime Tools Consoles Helm Chart hostnames" | sudo tee -a /etc/hosts echo "$MINIKUBE_IP management-console.local" | sudo tee -a /etc/hosts - echo "$MINIKUBE_IP task-console.local" | sudo tee -a /etc/hosts ``` ### Kubernetes install @@ -108,8 +100,6 @@ REVISION: 1 NOTES: 1. Management Console available at: http://management-console. -2. Task Console available at: - http://task-console. ``` ### OpenShift install @@ -139,8 +129,6 @@ REVISION: 1 NOTES: 1. Management Console available at: https://management-console. -2. Task Console available at: - https://task-console. ``` ## Installing a released version from the OCI registry: @@ -196,51 +184,36 @@ The following table lists the configurable parameters of the Runtime Tools Conso -| Key | Type | Default | Description | -| -------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | -| global.dataIndexUrl | string | `""` | Set the URL that points to the Data Index service | -| global.environment | string | `"DEV"` | If want to enable Keycloak integration set it to PROD, otherwise set it to DEV | -| global.ingressSource | string | `""` | Which ingress source is being used (none/"minikube"/"kubernetes"/"openshift") Obs.: For NOTES generation only | -| global.keycloakClientId | string | `""` | If using environment = PROD, set the KeyCloak client id | -| global.keycloakHealthCheck | bool | `false` | If using environment = PROD, enable or disable Keycloak health check | -| global.keycloakHealthCheckUrl | string | `""` | If using environment = PROD, set the KeyCloak health check url | -| global.keycloakRealm | string | `""` | If using environment = PROD, set the KeyCloak realm name | -| global.keycloakTokenValidity | string | `""` | If using environment = PROD, set the KeyCloak token validity | -| global.keycloakUrl | string | `""` | If using environment = PROD, set the KeyCloak auth url | -| global.kubernetesClusterDomain | string | `""` | If using Minikube or Kubernetes, set the cluster domain | -| global.kubernetesIngressClass | string | `""` | If using Minikube or Kubernetes, set the Ingress class (i.e: nginx) | -| global.openshiftRouteDomain | string | `""` | If using OpenShift Routes, set the Route domain | -| fullnameOverride | string | `""` | Overrides charts full name | -| nameOverride | string | `""` | Overrides charts name | -| management-console.appNameOverride | string | `""` | Overrides the deployed application name | -| management-console.appVersionOverride | string | `""` | Overrides the deployed application version | -| management-console.autoscaling | object | `{"enabled":false,"maxReplicas":100,"minReplicas":1,"targetCPUUtilizationPercentage":80}` | Management Console HorizontalPodAutoscaler configuration (https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) | -| management-console.enabled | bool | `true` | Enable or disable Management Console installation | -| management-console.fullnameOverride | string | `""` | Overrides charts full name | -| management-console.image | object | `{"account":"apache","name":"incubator-kie-kogito-management-console","pullPolicy":"IfNotPresent","registry":"docker.io","tag":"main"}` | Image source configuration for the Management Console image | -| management-console.imagePullSecrets | list | `[]` | Pull secrets used when pulling Management Console image | -| management-console.ingress | object | `{"annotations":{},"className":"{{ .Values.global.kubernetesIngressClass }}","enabled":false,"hosts":[{"host":"management-console.{{ .Values.global.kubernetesClusterDomain }}","paths":[{"path":"/","pathType":"ImplementationSpecific"}]}],"tls":[]}` | Management Console Ingress configuration (https://kubernetes.io/docs/concepts/services-networking/ingress/) | -| management-console.name | string | `"management-console"` | Component name | -| management-console.nameOverride | string | `""` | Overrides charts name | -| management-console.nodeSelector | object | `{}` | | -| management-console.openshiftRoute | object | `{"annotations":{},"enabled":false,"host":"management-console.{{ .Values.global.openshiftRouteDomain }}","tls":{"insecureEdgeTerminationPolicy":"None","termination":"edge"}}` | Management Console OpenShift Route configuration (https://docs.openshift.com/container-platform/4.14/networking/routes/route-configuration.html) | -| management-console.service | object | `{"nodePort":"","port":8081,"targetPort":8080,"type":"ClusterIP"}` | Management Console Service configuration (https://kubernetes.io/docs/concepts/services-networking/service/) | -| management-console.serviceAccount | object | `{"annotations":{},"create":true,"name":""}` | Management Console ServiceAccount configuration (https://kubernetes.io/docs/concepts/security/service-accounts/) | -| task-console.appNameOverride | string | `""` | Overrides the deployed application name | -| task-console.appTaskActiveStatesListOverride | string | `""` | Overrides the Task Console active states list | -| task-console.appTaskStatesListOverride | string | `""` | Overrides the Task Console states list | -| task-console.appVersionOverride | string | `""` | Overrides the deployed application version | -| task-console.autoscaling | object | `{"enabled":false,"maxReplicas":100,"minReplicas":1,"targetCPUUtilizationPercentage":80}` | Task Console HorizontalPodAutoscaler configuration (https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) | -| task-console.enabled | bool | `true` | Enable or disable Task Console installation | -| task-console.fullnameOverride | string | `""` | Overrides charts full name | -| task-console.image | object | `{"account":"apache","name":"incubator-kie-kogito-task-console","pullPolicy":"IfNotPresent","registry":"docker.io","tag":"main"}` | Image source configuration for the Management Console image | -| task-console.imagePullSecrets | list | `[]` | Pull secrets used when pulling Management Console image | -| task-console.ingress | object | `{"annotations":{},"className":"{{ .Values.global.kubernetesIngressClass }}","enabled":false,"hosts":[{"host":"task-console.{{ .Values.global.kubernetesClusterDomain }}","paths":[{"path":"/","pathType":"ImplementationSpecific"}]}],"tls":[]}` | Task Console Ingress configuration (https://kubernetes.io/docs/concepts/services-networking/ingress/) | -| task-console.name | string | `"task-console"` | Component name | -| task-console.nameOverride | string | `""` | Overrides charts name | -| task-console.openshiftRoute | object | `{"annotations":{},"enabled":false,"host":"task-console.{{ .Values.global.openshiftRouteDomain }}","tls":{"insecureEdgeTerminationPolicy":"None","termination":"edge"}}` | Task Console OpenShift Route configuration (https://docs.openshift.com/container-platform/4.14/networking/routes/route-configuration.html) | -| task-console.service | object | `{"nodePort":"","port":8080,"targetPort":8080,"type":"ClusterIP"}` | Task Console Service configuration (https://kubernetes.io/docs/concepts/services-networking/service/) | -| task-console.serviceAccount | object | `{"annotations":{},"create":true,"name":""}` | Task Console ServiceAccount configuration (https://kubernetes.io/docs/concepts/security/service-accounts/) | +| Key | Type | Default | Description | +| ------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| global.dataIndexUrl | string | `""` | Set the URL that points to the Data Index service | +| global.environment | string | `"DEV"` | If want to enable Keycloak integration set it to PROD, otherwise set it to DEV | +| global.ingressSource | string | `""` | Which ingress source is being used (none/"minikube"/"kubernetes"/"openshift") Obs.: For NOTES generation only | +| global.keycloakClientId | string | `""` | If using environment = PROD, set the KeyCloak client id | +| global.keycloakHealthCheck | bool | `false` | If using environment = PROD, enable or disable Keycloak health check | +| global.keycloakHealthCheckUrl | string | `""` | If using environment = PROD, set the KeyCloak health check url | +| global.keycloakRealm | string | `""` | If using environment = PROD, set the KeyCloak realm name | +| global.keycloakTokenValidity | string | `""` | If using environment = PROD, set the KeyCloak token validity | +| global.keycloakUrl | string | `""` | If using environment = PROD, set the KeyCloak auth url | +| global.kubernetesClusterDomain | string | `""` | If using Minikube or Kubernetes, set the cluster domain | +| global.kubernetesIngressClass | string | `""` | If using Minikube or Kubernetes, set the Ingress class (i.e: nginx) | +| global.openshiftRouteDomain | string | `""` | If using OpenShift Routes, set the Route domain | +| fullnameOverride | string | `""` | Overrides charts full name | +| nameOverride | string | `""` | Overrides charts name | +| management-console.appNameOverride | string | `""` | Overrides the deployed application name | +| management-console.appVersionOverride | string | `""` | Overrides the deployed application version | +| management-console.autoscaling | object | `{"enabled":false,"maxReplicas":100,"minReplicas":1,"targetCPUUtilizationPercentage":80}` | Management Console HorizontalPodAutoscaler configuration (https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) | +| management-console.enabled | bool | `true` | Enable or disable Management Console installation | +| management-console.fullnameOverride | string | `""` | Overrides charts full name | +| management-console.image | object | `{"account":"apache","name":"incubator-kie-kogito-management-console","pullPolicy":"IfNotPresent","registry":"docker.io","tag":"main"}` | Image source configuration for the Management Console image | +| management-console.imagePullSecrets | list | `[]` | Pull secrets used when pulling Management Console image | +| management-console.ingress | object | `{"annotations":{},"className":"{{ .Values.global.kubernetesIngressClass }}","enabled":false,"hosts":[{"host":"management-console.{{ .Values.global.kubernetesClusterDomain }}","paths":[{"path":"/","pathType":"ImplementationSpecific"}]}],"tls":[]}` | Management Console Ingress configuration (https://kubernetes.io/docs/concepts/services-networking/ingress/) | +| management-console.name | string | `"management-console"` | Component name | +| management-console.nameOverride | string | `""` | Overrides charts name | +| management-console.nodeSelector | object | `{}` | | +| management-console.openshiftRoute | object | `{"annotations":{},"enabled":false,"host":"management-console.{{ .Values.global.openshiftRouteDomain }}","tls":{"insecureEdgeTerminationPolicy":"None","termination":"edge"}}` | Management Console OpenShift Route configuration (https://docs.openshift.com/container-platform/4.14/networking/routes/route-configuration.html) | +| management-console.service | object | `{"nodePort":"","port":8081,"targetPort":8080,"type":"ClusterIP"}` | Management Console Service configuration (https://kubernetes.io/docs/concepts/services-networking/service/) | +| management-console.serviceAccount | object | `{"annotations":{},"create":true,"name":""}` | Management Console ServiceAccount configuration (https://kubernetes.io/docs/concepts/security/service-accounts/) | --- diff --git a/packages/runtime-tools-consoles-helm-chart/install.js b/packages/runtime-tools-consoles-helm-chart/install.js index f6772ba9f2b..2a4ef2108bd 100644 --- a/packages/runtime-tools-consoles-helm-chart/install.js +++ b/packages/runtime-tools-consoles-helm-chart/install.js @@ -23,7 +23,7 @@ const fs = require("fs"); // Set version for the Chart (and its dependencies) and Subcharts console.log("[runtime-tools-consoles-helm-chart install.js] Updating Chart.yaml files..."); -const chartFiles = ["src/Chart.yaml", "src/charts/task-console/Chart.yaml", "src/charts/management-console/Chart.yaml"]; +const chartFiles = ["src/Chart.yaml", "src/charts/management-console/Chart.yaml"]; chartFiles.forEach((file) => { const doc = yaml.parseDocument(fs.readFileSync(file, "utf8")); if (file == "src/Chart.yaml") { @@ -33,7 +33,6 @@ chartFiles.forEach((file) => { doc.setIn(["appVersion"], env.runtimeToolsConsolesHelmChart.tag); if (doc.getIn(["dependencies"])) { doc.setIn(["dependencies", "0", "version"], env.runtimeToolsConsolesHelmChart.tag); - doc.setIn(["dependencies", "1", "version"], env.runtimeToolsConsolesHelmChart.tag); } console.log(yaml.stringify(doc)); fs.writeFileSync(file, yaml.stringify(doc), "utf8"); @@ -41,7 +40,7 @@ chartFiles.forEach((file) => { // Set tags used for images console.log("[runtime-tools-consoles-helm-chart install.js] Updating values.yaml files..."); -const valuesFiles = ["src/charts/task-console/values.yaml", "src/charts/management-console/values.yaml"]; +const valuesFiles = ["src/charts/management-console/values.yaml"]; valuesFiles.forEach((file) => { const doc = yaml.parseDocument(fs.readFileSync(file, "utf8")); doc.setIn(["image", "tag"], env.root.streamName); diff --git a/packages/runtime-tools-consoles-helm-chart/package.json b/packages/runtime-tools-consoles-helm-chart/package.json index 6417a365bcb..69554b0ff3f 100644 --- a/packages/runtime-tools-consoles-helm-chart/package.json +++ b/packages/runtime-tools-consoles-helm-chart/package.json @@ -25,8 +25,7 @@ "update-readmes": "node scripts/update-readmes.js && pnpm format" }, "dependencies": { - "@kie-tools/kogito-management-console": "workspace:*", - "@kie-tools/kogito-task-console": "workspace:*" + "@kie-tools/kogito-management-console": "workspace:*" }, "devDependencies": { "@kie-tools/root-env": "workspace:*", diff --git a/packages/runtime-tools-consoles-helm-chart/src/Chart.lock b/packages/runtime-tools-consoles-helm-chart/src/Chart.lock index c2311558156..fd4d0ce91a7 100644 --- a/packages/runtime-tools-consoles-helm-chart/src/Chart.lock +++ b/packages/runtime-tools-consoles-helm-chart/src/Chart.lock @@ -2,8 +2,5 @@ dependencies: - name: management-console repository: "" version: 0.0.0 -- name: task-console - repository: "" - version: 0.0.0 -digest: sha256:bd9701735749abd6ed320a0f90d3b9b6dae4ac27b5c7e3b5d72de1037016a3d3 -generated: "2024-08-09T11:12:50.052943-03:00" +digest: sha256:84cd8d19b35a87b2a5393ae1880b8c76be191f4c1839739cd6783454b02c503f +generated: "2024-10-23T12:57:15.741355-03:00" diff --git a/packages/runtime-tools-consoles-helm-chart/src/Chart.yaml b/packages/runtime-tools-consoles-helm-chart/src/Chart.yaml index 2c74756c5f1..442f09e499e 100644 --- a/packages/runtime-tools-consoles-helm-chart/src/Chart.yaml +++ b/packages/runtime-tools-consoles-helm-chart/src/Chart.yaml @@ -8,6 +8,3 @@ dependencies: - name: management-console version: 0.0.0 condition: management-console.enabled - - name: task-console - version: 0.0.0 - condition: task-console.enabled diff --git a/packages/runtime-tools-consoles-helm-chart/src/README.md b/packages/runtime-tools-consoles-helm-chart/src/README.md index 835c5537dde..d48cf608cb0 100644 --- a/packages/runtime-tools-consoles-helm-chart/src/README.md +++ b/packages/runtime-tools-consoles-helm-chart/src/README.md @@ -26,55 +26,39 @@ A Helm chart to deploy Runtime Tools Consoles on Kubernetes | Repository | Name | Version | | ---------- | ------------------ | ------- | | | management-console | 0.0.0 | -| | task-console | 0.0.0 | ## Values -| Key | Type | Default | Description | -| -------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | -| global.dataIndexUrl | string | `""` | Set the URL that points to the Data Index service | -| global.environment | string | `"DEV"` | If want to enable Keycloak integration set it to PROD, otherwise set it to DEV | -| global.ingressSource | string | `""` | Which ingress source is being used (none/"minikube"/"kubernetes"/"openshift") Obs.: For NOTES generation only | -| global.keycloakClientId | string | `""` | If using environment = PROD, set the KeyCloak client id | -| global.keycloakHealthCheck | bool | `false` | If using environment = PROD, enable or disable Keycloak health check | -| global.keycloakHealthCheckUrl | string | `""` | If using environment = PROD, set the KeyCloak health check url | -| global.keycloakRealm | string | `""` | If using environment = PROD, set the KeyCloak realm name | -| global.keycloakTokenValidity | string | `""` | If using environment = PROD, set the KeyCloak token validity | -| global.keycloakUrl | string | `""` | If using environment = PROD, set the KeyCloak auth url | -| global.kubernetesClusterDomain | string | `""` | If using Minikube or Kubernetes, set the cluster domain | -| global.kubernetesIngressClass | string | `""` | If using Minikube or Kubernetes, set the Ingress class (i.e: nginx) | -| global.openshiftRouteDomain | string | `""` | If using OpenShift Routes, set the Route domain | -| fullnameOverride | string | `""` | Overrides charts full name | -| nameOverride | string | `""` | Overrides charts name | -| management-console.appNameOverride | string | `""` | Overrides the deployed application name | -| management-console.appVersionOverride | string | `""` | Overrides the deployed application version | -| management-console.autoscaling | object | `{"enabled":false,"maxReplicas":100,"minReplicas":1,"targetCPUUtilizationPercentage":80}` | Management Console HorizontalPodAutoscaler configuration (https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) | -| management-console.enabled | bool | `true` | Enable or disable Management Console installation | -| management-console.fullnameOverride | string | `""` | Overrides charts full name | -| management-console.image | object | `{"account":"apache","name":"incubator-kie-kogito-management-console","pullPolicy":"IfNotPresent","registry":"docker.io","tag":"main"}` | Image source configuration for the Management Console image | -| management-console.imagePullSecrets | list | `[]` | Pull secrets used when pulling Management Console image | -| management-console.ingress | object | `{"annotations":{},"className":"{{ .Values.global.kubernetesIngressClass }}","enabled":false,"hosts":[{"host":"management-console.{{ .Values.global.kubernetesClusterDomain }}","paths":[{"path":"/","pathType":"ImplementationSpecific"}]}],"tls":[]}` | Management Console Ingress configuration (https://kubernetes.io/docs/concepts/services-networking/ingress/) | -| management-console.name | string | `"management-console"` | Component name | -| management-console.nameOverride | string | `""` | Overrides charts name | -| management-console.nodeSelector | object | `{}` | | -| management-console.openshiftRoute | object | `{"annotations":{},"enabled":false,"host":"management-console.{{ .Values.global.openshiftRouteDomain }}","tls":{"insecureEdgeTerminationPolicy":"None","termination":"edge"}}` | Management Console OpenShift Route configuration (https://docs.openshift.com/container-platform/4.14/networking/routes/route-configuration.html) | -| management-console.service | object | `{"nodePort":"","port":8081,"targetPort":8080,"type":"ClusterIP"}` | Management Console Service configuration (https://kubernetes.io/docs/concepts/services-networking/service/) | -| management-console.serviceAccount | object | `{"annotations":{},"create":true,"name":""}` | Management Console ServiceAccount configuration (https://kubernetes.io/docs/concepts/security/service-accounts/) | -| task-console.appNameOverride | string | `""` | Overrides the deployed application name | -| task-console.appTaskActiveStatesListOverride | string | `""` | Overrides the Task Console active states list | -| task-console.appTaskStatesListOverride | string | `""` | Overrides the Task Console states list | -| task-console.appVersionOverride | string | `""` | Overrides the deployed application version | -| task-console.autoscaling | object | `{"enabled":false,"maxReplicas":100,"minReplicas":1,"targetCPUUtilizationPercentage":80}` | Task Console HorizontalPodAutoscaler configuration (https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) | -| task-console.enabled | bool | `true` | Enable or disable Task Console installation | -| task-console.fullnameOverride | string | `""` | Overrides charts full name | -| task-console.image | object | `{"account":"apache","name":"incubator-kie-kogito-task-console","pullPolicy":"IfNotPresent","registry":"docker.io","tag":"main"}` | Image source configuration for the Management Console image | -| task-console.imagePullSecrets | list | `[]` | Pull secrets used when pulling Management Console image | -| task-console.ingress | object | `{"annotations":{},"className":"{{ .Values.global.kubernetesIngressClass }}","enabled":false,"hosts":[{"host":"task-console.{{ .Values.global.kubernetesClusterDomain }}","paths":[{"path":"/","pathType":"ImplementationSpecific"}]}],"tls":[]}` | Task Console Ingress configuration (https://kubernetes.io/docs/concepts/services-networking/ingress/) | -| task-console.name | string | `"task-console"` | Component name | -| task-console.nameOverride | string | `""` | Overrides charts name | -| task-console.openshiftRoute | object | `{"annotations":{},"enabled":false,"host":"task-console.{{ .Values.global.openshiftRouteDomain }}","tls":{"insecureEdgeTerminationPolicy":"None","termination":"edge"}}` | Task Console OpenShift Route configuration (https://docs.openshift.com/container-platform/4.14/networking/routes/route-configuration.html) | -| task-console.service | object | `{"nodePort":"","port":8080,"targetPort":8080,"type":"ClusterIP"}` | Task Console Service configuration (https://kubernetes.io/docs/concepts/services-networking/service/) | -| task-console.serviceAccount | object | `{"annotations":{},"create":true,"name":""}` | Task Console ServiceAccount configuration (https://kubernetes.io/docs/concepts/security/service-accounts/) | +| Key | Type | Default | Description | +| ------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| global.dataIndexUrl | string | `""` | Set the URL that points to the Data Index service | +| global.environment | string | `"DEV"` | If want to enable Keycloak integration set it to PROD, otherwise set it to DEV | +| global.ingressSource | string | `""` | Which ingress source is being used (none/"minikube"/"kubernetes"/"openshift") Obs.: For NOTES generation only | +| global.keycloakClientId | string | `""` | If using environment = PROD, set the KeyCloak client id | +| global.keycloakHealthCheck | bool | `false` | If using environment = PROD, enable or disable Keycloak health check | +| global.keycloakHealthCheckUrl | string | `""` | If using environment = PROD, set the KeyCloak health check url | +| global.keycloakRealm | string | `""` | If using environment = PROD, set the KeyCloak realm name | +| global.keycloakTokenValidity | string | `""` | If using environment = PROD, set the KeyCloak token validity | +| global.keycloakUrl | string | `""` | If using environment = PROD, set the KeyCloak auth url | +| global.kubernetesClusterDomain | string | `""` | If using Minikube or Kubernetes, set the cluster domain | +| global.kubernetesIngressClass | string | `""` | If using Minikube or Kubernetes, set the Ingress class (i.e: nginx) | +| global.openshiftRouteDomain | string | `""` | If using OpenShift Routes, set the Route domain | +| fullnameOverride | string | `""` | Overrides charts full name | +| nameOverride | string | `""` | Overrides charts name | +| management-console.appNameOverride | string | `""` | Overrides the deployed application name | +| management-console.appVersionOverride | string | `""` | Overrides the deployed application version | +| management-console.autoscaling | object | `{"enabled":false,"maxReplicas":100,"minReplicas":1,"targetCPUUtilizationPercentage":80}` | Management Console HorizontalPodAutoscaler configuration (https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) | +| management-console.enabled | bool | `true` | Enable or disable Management Console installation | +| management-console.fullnameOverride | string | `""` | Overrides charts full name | +| management-console.image | object | `{"account":"apache","name":"incubator-kie-kogito-management-console","pullPolicy":"IfNotPresent","registry":"docker.io","tag":"main"}` | Image source configuration for the Management Console image | +| management-console.imagePullSecrets | list | `[]` | Pull secrets used when pulling Management Console image | +| management-console.ingress | object | `{"annotations":{},"className":"{{ .Values.global.kubernetesIngressClass }}","enabled":false,"hosts":[{"host":"management-console.{{ .Values.global.kubernetesClusterDomain }}","paths":[{"path":"/","pathType":"ImplementationSpecific"}]}],"tls":[]}` | Management Console Ingress configuration (https://kubernetes.io/docs/concepts/services-networking/ingress/) | +| management-console.name | string | `"management-console"` | Component name | +| management-console.nameOverride | string | `""` | Overrides charts name | +| management-console.nodeSelector | object | `{}` | | +| management-console.openshiftRoute | object | `{"annotations":{},"enabled":false,"host":"management-console.{{ .Values.global.openshiftRouteDomain }}","tls":{"insecureEdgeTerminationPolicy":"None","termination":"edge"}}` | Management Console OpenShift Route configuration (https://docs.openshift.com/container-platform/4.14/networking/routes/route-configuration.html) | +| management-console.service | object | `{"nodePort":"","port":8081,"targetPort":8080,"type":"ClusterIP"}` | Management Console Service configuration (https://kubernetes.io/docs/concepts/services-networking/service/) | +| management-console.serviceAccount | object | `{"annotations":{},"create":true,"name":""}` | Management Console ServiceAccount configuration (https://kubernetes.io/docs/concepts/security/service-accounts/) | --- diff --git a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/Chart.yaml b/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/Chart.yaml deleted file mode 100644 index ad9821ad989..00000000000 --- a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/Chart.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v2 -name: task-console -description: A Helm chart to deploy Runtime Tools Task Console on Kubernetes -type: application -version: 0.0.0 -appVersion: 0.0.0 diff --git a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/README.md b/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/README.md deleted file mode 100644 index d83d76cb985..00000000000 --- a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/README.md +++ /dev/null @@ -1,46 +0,0 @@ - - -# task-console - -![Version: 0.0.0](https://img.shields.io/badge/Version-0.0.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.0.0](https://img.shields.io/badge/AppVersion-0.0.0-informational?style=flat-square) - -A Helm chart to deploy Runtime Tools Task Console on Kubernetes - -## Values - -| Key | Type | Default | Description | -| ------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| appNameOverride | string | `""` | Overrides the deployed application name | -| appTaskActiveStatesListOverride | string | `""` | Overrides the Task Console active states list | -| appTaskStatesListOverride | string | `""` | Overrides the Task Console states list | -| appVersionOverride | string | `""` | Overrides the deployed application version | -| autoscaling | object | `{"enabled":false,"maxReplicas":100,"minReplicas":1,"targetCPUUtilizationPercentage":80}` | Task Console HorizontalPodAutoscaler configuration (https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) | -| enabled | bool | `true` | Enable or disable Task Console installation | -| fullnameOverride | string | `""` | Overrides charts full name | -| image | object | `{"account":"apache","name":"incubator-kie-kogito-task-console","pullPolicy":"IfNotPresent","registry":"docker.io","tag":"main"}` | Image source configuration for the Management Console image | -| imagePullSecrets | list | `[]` | Pull secrets used when pulling Management Console image | -| ingress | object | `{"annotations":{},"className":"{{ .Values.global.kubernetesIngressClass }}","enabled":false,"hosts":[{"host":"task-console.{{ .Values.global.kubernetesClusterDomain }}","paths":[{"path":"/","pathType":"ImplementationSpecific"}]}],"tls":[]}` | Task Console Ingress configuration (https://kubernetes.io/docs/concepts/services-networking/ingress/) | -| name | string | `"task-console"` | Component name | -| nameOverride | string | `""` | Overrides charts name | -| openshiftRoute | object | `{"annotations":{},"enabled":false,"host":"task-console.{{ .Values.global.openshiftRouteDomain }}","tls":{"insecureEdgeTerminationPolicy":"None","termination":"edge"}}` | Task Console OpenShift Route configuration (https://docs.openshift.com/container-platform/4.14/networking/routes/route-configuration.html) | -| service | object | `{"nodePort":"","port":8080,"targetPort":8080,"type":"ClusterIP"}` | Task Console Service configuration (https://kubernetes.io/docs/concepts/services-networking/service/) | -| serviceAccount | object | `{"annotations":{},"create":true,"name":""}` | Task Console ServiceAccount configuration (https://kubernetes.io/docs/concepts/security/service-accounts/) | - ---- - -Autogenerated from chart metadata using [helm-docs v1.13.1](https://github.com/norwoodj/helm-docs/releases/v1.13.1) diff --git a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/_helpers.tpl b/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/_helpers.tpl deleted file mode 100644 index fdede13cbb1..00000000000 --- a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/_helpers.tpl +++ /dev/null @@ -1,40 +0,0 @@ -{{/* -Create a fully qualified name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "taskConsole.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name .Values.name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} - -{{/* -These can be overriden by the base chart. -*/}} -{{- define "selectorLabels" -}} -{{- end -}} -{{- define "labels" -}} -{{- end -}} - -{{- define "taskConsole.selectorLabels" -}} -app.kubernetes.io/component: {{ .Values.name | quote }} -{{ include "selectorLabels" . }} -{{- end -}} - -{{- define "taskConsole.labels" -}} -{{ include "taskConsole.selectorLabels" . }} -{{ include "labels" . }} -{{- end -}} - -{{/* -Create the name of the service account to use for the task console component -*/}} -{{- define "taskConsole.serviceAccountName" -}} -{{- if .Values.serviceAccount.create -}} - {{ default (include "taskConsole.fullname" .) .Values.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.serviceAccount.name }} -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/deployment.yaml.helm b/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/deployment.yaml.helm deleted file mode 100644 index e14c0d7f7e0..00000000000 --- a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/deployment.yaml.helm +++ /dev/null @@ -1,112 +0,0 @@ -{{- $dataIndexUrl := .Values.global.dataIndexUrl | required ".Values.global.dataIndexUrl is required." -}} ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "taskConsole.fullname" . }} - labels: - {{- include "taskConsole.labels" . | nindent 4 }} -spec: - {{- if not .Values.autoscaling.enabled }} - replicas: {{ .Values.replicaCount }} - {{- end }} - selector: - matchLabels: - {{- include "taskConsole.selectorLabels" . | nindent 6 }} - template: - metadata: - {{- with .Values.podAnnotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - labels: - {{- include "taskConsole.selectorLabels" . | nindent 8 }} - spec: - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "taskConsole.serviceAccountName" . }} - securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} - containers: - - name: {{ .Values.name }} - securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.image.registry }}/{{ .Values.image.account }}/{{ .Values.image.name }}:{{ .Values.image.tag | default .Chart.AppVersion }}" - {{- with .Values.env }} - env: - {{- tpl (toYaml .) $ | nindent 12 }} - {{- end }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - env: - - name: RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_ENV_MODE - value: {{ .Values.global.environment }} - - name: RUNTIME_TOOLS_TASK_CONSOLE_DATA_INDEX_ENDPOINT - value: {{ $dataIndexUrl }} - {{- if .Values.appNameOverride }} - - name: RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_APP_NAME - value: {{ .Values.appNameOverride }} - {{- end }} - {{- if .Values.appVersionOverride }} - - name: RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_APP_VERSION - value: {{ .Values.appVersionOverride }} - {{- end }} - {{- if .Values.appTaskStatesListOverride }} - - name: RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_TASK_STATES_LIST - value: {{ .Values.appTaskStatesListOverride }} - {{- end }} - {{- if .Values.appTaskActiveStatesListOverride }} - - name: RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_TASK_ACTIVE_STATES_LIST - value: {{ .Values.appTaskActiveStatesListOverride }} - {{- end }} - {{- if .Values.global.keycloakHealthCheck }} - - name: KOGITO_CONSOLES_KEYCLOAK_DISABLE_HEALTH_CHECK - value: true - {{- end }} - {{- if .Values.global.keycloakTokenValidity }} - - name: KOGITO_CONSOLES_KEYCLOAK_UPDATE_TOKEN_VALIDITY - value: {{ .Values.global.keycloakTokenValidity }} - {{- end }} - {{- if .Values.global.keycloakHealthCheckUrl }} - - name: KOGITO_CONSOLES_KEYCLOAK_HEALTH_CHECK_URL - value: {{ .Values.global.keycloakHealthCheckUrl }} - {{- end }} - {{- if .Values.global.keycloakRealm }} - - name: KOGITO_CONSOLES_KEYCLOAK_REALM - value: {{ .Values.global.keycloakRealm }} - {{- end }} - {{- if .Values.global.keycloakUrl }} - - name: KOGITO_CONSOLES_KEYCLOAK_URL - value: {{ .Values.global.keycloakUrl }} - {{- end }} - {{- if .Values.global.keycloakClientId }} - - name: KOGITO_CONSOLES_KEYCLOAK_CLIENT_ID - value: {{ .Values.global.keycloakClientId }} - {{- end }} - ports: - - name: http - containerPort: {{ .Values.service.targetPort }} - protocol: TCP - livenessProbe: - httpGet: - path: / - port: http - readinessProbe: - httpGet: - path: / - port: http - resources: - {{- toYaml .Values.resources | nindent 12 }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/hpa.yaml.helm b/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/hpa.yaml.helm deleted file mode 100644 index c20d58f6716..00000000000 --- a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/hpa.yaml.helm +++ /dev/null @@ -1,28 +0,0 @@ -{{- if .Values.autoscaling.enabled }} -apiVersion: autoscaling/v2beta1 -kind: HorizontalPodAutoscaler -metadata: - name: {{ include "taskConsole.fullname" . }} - labels: - {{- include "taskConsole.labels" . | nindent 4 }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ include "taskConsole.fullname" . }} - minReplicas: {{ .Values.autoscaling.minReplicas }} - maxReplicas: {{ .Values.autoscaling.maxReplicas }} - metrics: - {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} - - type: Resource - resource: - name: cpu - targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} - {{- end }} - {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} - - type: Resource - resource: - name: memory - targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} - {{- end }} -{{- end }} diff --git a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/ingress.yaml.helm b/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/ingress.yaml.helm deleted file mode 100644 index 985d68395d1..00000000000 --- a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/ingress.yaml.helm +++ /dev/null @@ -1,61 +0,0 @@ -{{- if .Values.ingress.enabled -}} -{{- $fullName := include "taskConsole.fullname" . -}} -{{- $svcPort := .Values.service.port -}} -{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} - {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} - {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} - {{- end }} -{{- end }} -{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} -apiVersion: networking.k8s.io/v1 -{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} -apiVersion: networking.k8s.io/v1beta1 -{{- else -}} -apiVersion: extensions/v1beta1 -{{- end }} -kind: Ingress -metadata: - name: {{ $fullName }} - labels: - {{- include "taskConsole.labels" . | nindent 4 }} - {{- with .Values.ingress.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} - ingressClassName: {{ tpl .Values.ingress.className . | quote }} - {{- end }} - {{- if .Values.ingress.tls }} - tls: - {{- range .Values.ingress.tls }} - - hosts: - {{- range .hosts }} - - {{ . | quote }} - {{- end }} - secretName: {{ .secretName }} - {{- end }} - {{- end }} - rules: - {{- range .Values.ingress.hosts }} - - host: {{ tpl .host $ | quote }} - http: - paths: - {{- range .paths }} - - path: {{ .path }} - {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} - pathType: {{ .pathType }} - {{- end }} - backend: - {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} - service: - name: {{ $fullName }} - port: - number: {{ $svcPort }} - {{- else }} - serviceName: {{ $fullName }} - servicePort: {{ $svcPort }} - {{- end }} - {{- end }} - {{- end }} -{{- end }} diff --git a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/route.yaml.helm b/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/route.yaml.helm deleted file mode 100644 index 359caa20f27..00000000000 --- a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/route.yaml.helm +++ /dev/null @@ -1,25 +0,0 @@ -{{- if and (.Capabilities.APIVersions.Has "route.openshift.io/v1/Route") (.Values.openshiftRoute.enabled) -}} -{{- $fullName := include "taskConsole.fullname" . -}} -{{- $svcPort := .Values.service.targetPort -}} -kind: Route -apiVersion: route.openshift.io/v1 -metadata: - name: {{ $fullName }} - labels: - {{- include "taskConsole.labels" . | nindent 4 }} - {{- with .Values.openshiftRoute.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - host: {{ tpl .Values.openshiftRoute.host . | quote }} - to: - name: {{ $fullName }} - kind: Service - port: - targetPort: {{ $svcPort }} - {{- with .Values.openshiftRoute.tls }} - tls: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/service.yaml.helm b/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/service.yaml.helm deleted file mode 100644 index 4ca1e450e18..00000000000 --- a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/service.yaml.helm +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "taskConsole.fullname" . }} - labels: - {{- include "taskConsole.labels" . | nindent 4 }} -spec: - type: {{ .Values.service.type }} - ports: - - port: {{ .Values.service.port }} - targetPort: {{ .Values.service.targetPort }} - protocol: TCP - name: http - {{- if (and (eq .Values.service.type "NodePort")) }} - nodePort: {{ .Values.service.nodePort }} - {{- end }} - selector: - {{- include "taskConsole.selectorLabels" . | nindent 4 }} diff --git a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/serviceaccount.yaml.helm b/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/serviceaccount.yaml.helm deleted file mode 100644 index 527cc3cb033..00000000000 --- a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/templates/serviceaccount.yaml.helm +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "taskConsole.serviceAccountName" . }} - labels: - {{- include "taskConsole.labels" . | nindent 4 }} - {{- with .Values.serviceAccount.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end }} diff --git a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/tests/test-connection.yaml.helm b/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/tests/test-connection.yaml.helm deleted file mode 100644 index 9347d65d3f6..00000000000 --- a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/tests/test-connection.yaml.helm +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: "{{ include "task-console.fullname" . }}-test-connection" - labels: - {{- include "task-console.labels" . | nindent 4 }} - annotations: - "helm.sh/hook": test -spec: - containers: - - name: wget - image: busybox - command: ['wget'] - args: ['{{ include "task-console.fullname" . }}:{{ .Values.service.port }}'] - restartPolicy: Never diff --git a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/values.yaml b/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/values.yaml deleted file mode 100644 index 431d6bfd3b3..00000000000 --- a/packages/runtime-tools-consoles-helm-chart/src/charts/task-console/values.yaml +++ /dev/null @@ -1,118 +0,0 @@ -# -# 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. -# - -# Task Console application -# -- Enable or disable Task Console installation -enabled: true - -# -- Component name -name: task-console - -# -- Overrides the deployed application name -appNameOverride: "" - -# -- Overrides the deployed application version -appVersionOverride: "" - -# -- Overrides the Task Console states list -appTaskStatesListOverride: "" - -# -- Overrides the Task Console active states list -appTaskActiveStatesListOverride: "" - -# @ignored -replicaCount: 1 - -# -- Image source configuration for the Management Console image -image: - registry: docker.io - account: apache - name: incubator-kie-kogito-task-console - pullPolicy: IfNotPresent - tag: "main" # AUTO-GENERATED BY install.js. DO NOT CHANGE MANUALLY. - -# -- Pull secrets used when pulling Management Console image -imagePullSecrets: [] - -# -- Overrides charts name -nameOverride: "" -# -- Overrides charts full name -fullnameOverride: "" - -# -- Task Console ServiceAccount configuration (https://kubernetes.io/docs/concepts/security/service-accounts/) -serviceAccount: - create: true - annotations: {} - name: "" - -# @ignored -podAnnotations: {} - -# @ignored -podSecurityContext: {} - -# @ignored -securityContext: {} - -# -- Task Console Service configuration (https://kubernetes.io/docs/concepts/services-networking/service/) -service: - type: ClusterIP - port: 8080 - targetPort: 8080 - nodePort: "" - -# -- Task Console Ingress configuration (https://kubernetes.io/docs/concepts/services-networking/ingress/) -ingress: - enabled: false - className: "{{ .Values.global.kubernetesIngressClass }}" - annotations: {} - hosts: - - host: task-console.{{ .Values.global.kubernetesClusterDomain }} - paths: - - path: / - pathType: ImplementationSpecific - tls: [] - -# -- Task Console OpenShift Route configuration (https://docs.openshift.com/container-platform/4.14/networking/routes/route-configuration.html) -openshiftRoute: - enabled: false - annotations: {} - host: task-console.{{ .Values.global.openshiftRouteDomain }} - tls: - termination: edge - insecureEdgeTerminationPolicy: None - -# @ignored -resources: {} - -# -- Task Console HorizontalPodAutoscaler configuration (https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) -autoscaling: - enabled: false - minReplicas: 1 - maxReplicas: 100 - targetCPUUtilizationPercentage: 80 - -# @ignored -nodeSelector: {} - -# @ignored -tolerations: [] - -# @ignored -affinity: {} diff --git a/packages/runtime-tools-consoles-helm-chart/src/templates/NOTES.txt b/packages/runtime-tools-consoles-helm-chart/src/templates/NOTES.txt index 90aa9790ab6..55da498cc10 100644 --- a/packages/runtime-tools-consoles-helm-chart/src/templates/NOTES.txt +++ b/packages/runtime-tools-consoles-helm-chart/src/templates/NOTES.txt @@ -29,33 +29,6 @@ In order to get {{ .Release.Name }} running you need to run these commands: {{- end }} {{- end }} -{{- if and (index .Values "task-console" "enabled") (index .Values "task-console" "ingress" "enabled") }} -2. Task Console available at: -{{- range $host := index .Values "task-console" "ingress" "hosts" }} - {{- range .paths }} - http{{ if index $.Values "task-console" "ingress" "tls" }}s{{ end }}://{{ tpl $host.host $ }}{{ .path }} - {{- end }} -{{- end }} -{{- else }} - -2. Run the following commands in a separate terminal to port-forward Task Console application: -{{- if contains "NodePort" ( index .Values "task-console" "service" "type" ) }} - export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "taskConsole.fullname" ( index .Subcharts "task-console" ) }}) - export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - echo http://$NODE_IP:$NODE_PORT -{{- else if contains "LoadBalancer" ( index .Values "task-console" "service" "type" ) }} - NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "taskConsole.fullname" ( index .Subcharts "task-console" ) }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "taskConsole.fullname" ( index .Subcharts "task-console" ) }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo http://$SERVICE_IP:{{ index .Values "task-console" "service" "port" }} -{{- else if contains "ClusterIP" ( index .Values "task-console" "service" "type" ) }} - export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/component={{ index .Values "task-console" "name" }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") - echo "Task Console URL: http://127.0.0.1:{{ index .Values "task-console" "service" "port" }}" - kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME {{ index .Values "task-console" "service" "port" }}:$CONTAINER_PORT -{{- end }} -{{- end }} - {{- else if eq .Values.global.ingressSource "minikube" }} You may need to add the above hostnames to your /etc/hosts file, mapping them to your minikube ip. @@ -70,13 +43,6 @@ Run the following commands: {{- end }} {{- end }} {{- end }} -{{- if index .Values "task-console" "enabled" }} -{{- range $host := index .Values "task-console" "ingress" "hosts" }} - {{- range .paths }} - echo "$MINIKUBE_IP {{ tpl $host.host $ }}" | sudo tee -a /etc/hosts - {{- end }} -{{- end }} -{{- end }} {{- else if eq .Values.global.ingressSource "openshift" }} @@ -84,10 +50,6 @@ Run the following commands: 1. Management Console available at: http{{ if index $.Values "management-console" "openshiftRoute" "tls" }}s{{ end }}://{{ tpl (index .Values "management-console" "openshiftRoute" "host") . }} {{- end }} -{{- if index .Values "task-console" "enabled" }} -2. Task Console available at: - http{{ if index $.Values "task-console" "openshiftRoute" "tls" }}s{{ end }}://{{ tpl (index .Values "task-console" "openshiftRoute" "host") . }} -{{- end }} {{- else }} {{- if and ( index .Values "management-console" "enabled" ) ( index .Values "management-console" "ingress" "enabled" ) }} @@ -98,13 +60,5 @@ Run the following commands: {{- end }} {{- end }} {{- end }} -{{- if and ( index .Values "task-console" "enabled" ) ( index .Values "task-console" "ingress" "enabled" ) }} -2. Task Console available at: -{{- range $host := index .Values "task-console" "ingress" "hosts" }} - {{- range .paths }} - http{{ if index $.Values "task-console" "ingress" "tls" }}s{{ end }}://{{ tpl $host.host $ }}{{ .path }} - {{- end }} -{{- end }} -{{- end }} {{- end }} diff --git a/packages/runtime-tools-consoles-helm-chart/src/values-kubernetes.yaml b/packages/runtime-tools-consoles-helm-chart/src/values-kubernetes.yaml index 1ee20785f24..d08ceb6dd66 100644 --- a/packages/runtime-tools-consoles-helm-chart/src/values-kubernetes.yaml +++ b/packages/runtime-tools-consoles-helm-chart/src/values-kubernetes.yaml @@ -17,11 +17,6 @@ # under the License. # -# Task Console application -task-console: - ingress: - enabled: true - # Management Console application management-console: ingress: diff --git a/packages/runtime-tools-consoles-helm-chart/src/values-minikube-nginx.yaml b/packages/runtime-tools-consoles-helm-chart/src/values-minikube-nginx.yaml index a040808a5a3..07af76f1645 100644 --- a/packages/runtime-tools-consoles-helm-chart/src/values-minikube-nginx.yaml +++ b/packages/runtime-tools-consoles-helm-chart/src/values-minikube-nginx.yaml @@ -17,11 +17,6 @@ # under the License. # -# Task Console application -task-console: - ingress: - enabled: true - # Management Console application management-console: ingress: diff --git a/packages/runtime-tools-consoles-helm-chart/src/values-openshift.yaml b/packages/runtime-tools-consoles-helm-chart/src/values-openshift.yaml index 7146a9fee1c..9470e232095 100644 --- a/packages/runtime-tools-consoles-helm-chart/src/values-openshift.yaml +++ b/packages/runtime-tools-consoles-helm-chart/src/values-openshift.yaml @@ -17,12 +17,6 @@ # under the License. # -# Task Console application -task-console: - openshiftRoute: - enabled: true - host: task-console.{{ .Values.global.openshiftRouteDomain }} - # Management Console application management-console: openshiftRoute: diff --git a/packages/runtime-tools-management-console-webapp/README.md b/packages/runtime-tools-management-console-webapp/README.md index 6210e53c8d1..4083d328dfe 100644 --- a/packages/runtime-tools-management-console-webapp/README.md +++ b/packages/runtime-tools-management-console-webapp/README.md @@ -185,6 +185,41 @@ The milestones panel show the list of milestones present and their current state ![Milestones](./docs/milestones.png?raw=true "Milestones") +## Working with the Tasks panel + +The tasks panel shows a list of user tasks which are available for a process. Each column contains detailed information about the user task which are - _Name_, _Process_, _Priority_, _Status_, _Started_ and _Last update_. The columns are sortable. + +![Tasks](./docs/taskconsole.png?raw=true "Tasks") + +The task console consist of filters, which can be used to narrow down the search on a user task. There are two filters available + +- A filter based on the status(dropdown) +- A filter based on the task name(text search) + +![Filters](./docs/taskfilters.png?raw=true "Filters") + +The _Status_ filter can be dropped down to view the and select the states available + +![States](./docs/taskstates.png?raw=true "States") + +A _refresh_ button is available to refresh the list of user tasks + +A _Reset to default_ button is available to reset the filters to its initial state. + +The user task list also supports pagination. + +Clicking on the name of the user task will navigate to another screen, which consist of the auto generated forms. + +### Task details + +The task details page consist of an auto generated forms and buttons to perform corresponding action on the user tasks. + +![Forms](./docs/taskforms.png?raw=true "Forms") + +The task details page also contains a _View details_ button, to view more details about the task. + +![Details](./docs/taskdetails.png?raw=true "Details") + ## Enabling Keycloak security ### Starting and Configuring the Keycloak Server diff --git a/packages/runtime-tools-task-console-webapp/docs/taskconsole.png b/packages/runtime-tools-management-console-webapp/docs/taskconsole.png similarity index 100% rename from packages/runtime-tools-task-console-webapp/docs/taskconsole.png rename to packages/runtime-tools-management-console-webapp/docs/taskconsole.png diff --git a/packages/runtime-tools-task-console-webapp/docs/details.png b/packages/runtime-tools-management-console-webapp/docs/taskdetails.png similarity index 100% rename from packages/runtime-tools-task-console-webapp/docs/details.png rename to packages/runtime-tools-management-console-webapp/docs/taskdetails.png diff --git a/packages/runtime-tools-task-console-webapp/docs/filters.png b/packages/runtime-tools-management-console-webapp/docs/taskfilters.png similarity index 100% rename from packages/runtime-tools-task-console-webapp/docs/filters.png rename to packages/runtime-tools-management-console-webapp/docs/taskfilters.png diff --git a/packages/runtime-tools-task-console-webapp/docs/forms.png b/packages/runtime-tools-management-console-webapp/docs/taskforms.png similarity index 100% rename from packages/runtime-tools-task-console-webapp/docs/forms.png rename to packages/runtime-tools-management-console-webapp/docs/taskforms.png diff --git a/packages/runtime-tools-task-console-webapp/docs/states.png b/packages/runtime-tools-management-console-webapp/docs/taskstates.png similarity index 100% rename from packages/runtime-tools-task-console-webapp/docs/states.png rename to packages/runtime-tools-management-console-webapp/docs/taskstates.png diff --git a/packages/runtime-tools-management-console-webapp/package.json b/packages/runtime-tools-management-console-webapp/package.json index 6a568f18fb8..b35f35f7946 100644 --- a/packages/runtime-tools-management-console-webapp/package.json +++ b/packages/runtime-tools-management-console-webapp/package.json @@ -56,6 +56,8 @@ "@graphql-codegen/typescript": "^2.8.8", "@graphql-codegen/typescript-operations": "^2.5.13", "@graphql-codegen/typescript-react-apollo": "^3.3.7", + "@kie-tools-core/envelope": "workspace:*", + "@kie-tools-core/envelope-bus": "workspace:*", "@kie-tools-core/webpack-base": "workspace:*", "@kie-tools/eslint": "workspace:*", "@kie-tools/root-env": "workspace:*", @@ -72,7 +74,7 @@ "cors": "^2.8.5", "css-loader": "^5.2.6", "css-minimizer-webpack-plugin": "^5.0.1", - "express": "^4.21.0", + "express": "^4.21.1", "file-loader": "^6.2.0", "html-webpack-plugin": "^5.3.2", "https-browserify": "^1.0.0", diff --git a/packages/runtime-tools-task-console-webapp/resources/form-displayer.html b/packages/runtime-tools-management-console-webapp/resources/form-displayer.html similarity index 100% rename from packages/runtime-tools-task-console-webapp/resources/form-displayer.html rename to packages/runtime-tools-management-console-webapp/resources/form-displayer.html diff --git a/packages/runtime-tools-management-console-webapp/src/components/console/ManagementConsole/ManagementConsole.tsx b/packages/runtime-tools-management-console-webapp/src/components/console/ManagementConsole/ManagementConsole.tsx index d7dfcd4c2ef..dea6d49fa17 100644 --- a/packages/runtime-tools-management-console-webapp/src/components/console/ManagementConsole/ManagementConsole.tsx +++ b/packages/runtime-tools-management-console-webapp/src/components/console/ManagementConsole/ManagementConsole.tsx @@ -31,6 +31,8 @@ import { PageLayout } from "@kie-tools/runtime-tools-components/dist/components/ import { ProcessListContextProvider } from "@kie-tools/runtime-tools-process-webapp-components/dist/ProcessList"; import { ProcessDetailsContextProvider } from "@kie-tools/runtime-tools-process-webapp-components/dist/ProcessDetails"; import { JobsManagementContextProvider } from "@kie-tools/runtime-tools-process-webapp-components/dist/JobsManagement"; +import { TaskInboxContextProvider } from "@kie-tools/runtime-tools-process-webapp-components/dist/TaskInbox"; +import { TaskFormContextProvider } from "@kie-tools/runtime-tools-process-webapp-components/dist/TaskForms"; interface IOwnProps { apolloClient: ApolloClient; @@ -64,11 +66,15 @@ const ManagementConsole: React.FC = ({ apolloClient, userContext, chi - - - - - + + + + + + + + + diff --git a/packages/runtime-tools-management-console-webapp/src/components/console/ManagementConsoleNav/ManagementConsoleNav.tsx b/packages/runtime-tools-management-console-webapp/src/components/console/ManagementConsoleNav/ManagementConsoleNav.tsx index 62c15c8972d..279d056c599 100644 --- a/packages/runtime-tools-management-console-webapp/src/components/console/ManagementConsoleNav/ManagementConsoleNav.tsx +++ b/packages/runtime-tools-management-console-webapp/src/components/console/ManagementConsoleNav/ManagementConsoleNav.tsx @@ -34,9 +34,16 @@ const ManagementConsoleNav: React.FC = ({ pathname }) => { Process Instances - - - Jobs Management + + + Jobs + + + + + + + Tasks diff --git a/packages/runtime-tools-management-console-webapp/src/components/console/ManagementConsoleRoutes/ManagementConsoleRoutes.tsx b/packages/runtime-tools-management-console-webapp/src/components/console/ManagementConsoleRoutes/ManagementConsoleRoutes.tsx index 4201fee73db..18be1aabe22 100644 --- a/packages/runtime-tools-management-console-webapp/src/components/console/ManagementConsoleRoutes/ManagementConsoleRoutes.tsx +++ b/packages/runtime-tools-management-console-webapp/src/components/console/ManagementConsoleRoutes/ManagementConsoleRoutes.tsx @@ -18,7 +18,7 @@ */ import * as React from "react"; import { Redirect, Route, Switch } from "react-router-dom"; -import { JobsManagementPage, ProcessListPage, ProcessDetailsPage } from "../../pages"; +import { JobsPage, ProcessListPage, ProcessDetailsPage, TasksPage, TaskDetailsPage } from "../../pages"; import { PageNotFound } from "@kie-tools/runtime-tools-shared-webapp-components/dist/PageNotFound"; import { NoData } from "@kie-tools/runtime-tools-shared-webapp-components/dist/NoData"; @@ -27,17 +27,17 @@ const ManagementConsoleRoutes: React.FC = () => { } /> - + + + } /> } + render={(_props) => } /> ( - - )} + render={(_props) => } /> ); diff --git a/packages/runtime-tools-management-console-webapp/src/components/containers/JobsManagementContainer/JobsManagementContainer.tsx b/packages/runtime-tools-management-console-webapp/src/components/containers/JobsContainer/JobsContainer.tsx similarity index 93% rename from packages/runtime-tools-management-console-webapp/src/components/containers/JobsManagementContainer/JobsManagementContainer.tsx rename to packages/runtime-tools-management-console-webapp/src/components/containers/JobsContainer/JobsContainer.tsx index e4cdf71052d..4bc5e8611ad 100644 --- a/packages/runtime-tools-management-console-webapp/src/components/containers/JobsManagementContainer/JobsManagementContainer.tsx +++ b/packages/runtime-tools-management-console-webapp/src/components/containers/JobsContainer/JobsContainer.tsx @@ -24,9 +24,9 @@ import { useJobsManagementGatewayApi, } from "@kie-tools/runtime-tools-process-webapp-components/dist/JobsManagement"; -const JobsManagementContainer: React.FC = () => { +const JobsContainer: React.FC = () => { const gatewayApi: JobsManagementGatewayApi = useJobsManagementGatewayApi(); return ; }; -export default JobsManagementContainer; +export default JobsContainer; diff --git a/packages/runtime-tools-task-console-webapp/src/components/pages/TaskDetailsPage/components/TaskFormContainer/TaskFormContainer.tsx b/packages/runtime-tools-management-console-webapp/src/components/containers/TaskFormContainer/TaskFormContainer.tsx similarity index 95% rename from packages/runtime-tools-task-console-webapp/src/components/pages/TaskDetailsPage/components/TaskFormContainer/TaskFormContainer.tsx rename to packages/runtime-tools-management-console-webapp/src/components/containers/TaskFormContainer/TaskFormContainer.tsx index 7899ec20456..8e74e503305 100644 --- a/packages/runtime-tools-task-console-webapp/src/components/pages/TaskDetailsPage/components/TaskFormContainer/TaskFormContainer.tsx +++ b/packages/runtime-tools-management-console-webapp/src/components/containers/TaskFormContainer/TaskFormContainer.tsx @@ -48,7 +48,7 @@ const TaskFormContainer: React.FC = ({ driver={{ doSubmit(phase?: string, payload?: any): Promise { return gatewayApi - .doSubmit(userTask, phase, payload) + .doSubmitAsAnonymous(userTask, phase, payload) .then((result) => onSubmitSuccess(phase)) .catch((error) => { const message = error.response ? error.response.data : error.message; @@ -56,7 +56,7 @@ const TaskFormContainer: React.FC = ({ }); }, getTaskFormSchema(): Promise> { - return gatewayApi.getTaskFormSchema(userTask); + return gatewayApi.getTaskFormSchemaAsAnonymous(userTask); }, getCustomForm(): Promise
{ return gatewayApi.getCustomForm(userTask); diff --git a/packages/runtime-tools-task-console-webapp/src/components/pages/TaskInboxPage/container/TaskInboxContainer/TaskInboxContainer.tsx b/packages/runtime-tools-management-console-webapp/src/components/containers/TasksContainer/TasksContainer.tsx similarity index 96% rename from packages/runtime-tools-task-console-webapp/src/components/pages/TaskInboxPage/container/TaskInboxContainer/TaskInboxContainer.tsx rename to packages/runtime-tools-management-console-webapp/src/components/containers/TasksContainer/TasksContainer.tsx index 9f0f921d274..07daf8e161c 100644 --- a/packages/runtime-tools-task-console-webapp/src/components/pages/TaskInboxPage/container/TaskInboxContainer/TaskInboxContainer.tsx +++ b/packages/runtime-tools-management-console-webapp/src/components/containers/TasksContainer/TasksContainer.tsx @@ -45,7 +45,7 @@ const TaskInboxContainer: React.FC = ({ ouiaId, ouiaSafe }) => { return ( = () => { +const JobsPage: React.FC = () => { useEffect(() => { - return ouiaPageTypeAndObjectId("jobs-management"); + return ouiaPageTypeAndObjectId("jobs"); }); return ( - - {/* */} + - + ); }; -export default JobsManagementPage; +export default JobsPage; diff --git a/packages/runtime-tools-task-console-webapp/src/components/pages/TaskDetailsPage/TaskDetailsPage.tsx b/packages/runtime-tools-management-console-webapp/src/components/pages/TaskDetailsPage/TaskDetailsPage.tsx similarity index 88% rename from packages/runtime-tools-task-console-webapp/src/components/pages/TaskDetailsPage/TaskDetailsPage.tsx rename to packages/runtime-tools-management-console-webapp/src/components/pages/TaskDetailsPage/TaskDetailsPage.tsx index f4921801abe..42765ff8469 100644 --- a/packages/runtime-tools-task-console-webapp/src/components/pages/TaskDetailsPage/TaskDetailsPage.tsx +++ b/packages/runtime-tools-management-console-webapp/src/components/pages/TaskDetailsPage/TaskDetailsPage.tsx @@ -36,7 +36,7 @@ import { PageSection } from "@patternfly/react-core/dist/js/components/Page"; import { Bullseye } from "@patternfly/react-core/dist/js/layouts/Bullseye"; import { Grid, GridItem } from "@patternfly/react-core/dist/js/layouts/Grid"; import { Flex, FlexItem } from "@patternfly/react-core/dist/js/layouts/Flex"; -import TaskFormContainer from "./components/TaskFormContainer/TaskFormContainer"; +import TaskFormContainer from "../../containers/TaskFormContainer/TaskFormContainer"; import FormNotification, { Notification } from "./components/FormNotification/FormNotification"; import { TaskInboxGatewayApi, @@ -102,7 +102,7 @@ const TaskDetailsPage: React.FC & OUIAProps> = ({ oui message: submitMessage, details: notificationDetails, customAction: { - label: "Go to Task Inbox", + label: "Go to Tasks", onClick: () => { setNotification(null); goToInbox(); @@ -116,7 +116,7 @@ const TaskDetailsPage: React.FC & OUIAProps> = ({ oui const goToInbox = () => { taskInboxGatewayApi.clearOpenTask(); - props.history.push("/"); + props.history.push("/Tasks"); }; const onSubmitSuccess = (phase: string) => { @@ -136,9 +136,9 @@ const TaskDetailsPage: React.FC & OUIAProps> = ({ oui - - - + + + @@ -154,9 +154,9 @@ const TaskDetailsPage: React.FC & OUIAProps> = ({ oui - - - + + + + {issueTrackerHref && ( + + + + )} + + + + ); +} diff --git a/packages/scesim-editor/src/commands/CommandsContextProvider.tsx b/packages/scesim-editor/src/commands/CommandsContextProvider.tsx new file mode 100644 index 00000000000..aa6b09ac182 --- /dev/null +++ b/packages/scesim-editor/src/commands/CommandsContextProvider.tsx @@ -0,0 +1,43 @@ +/* + * 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 * as React from "react"; +import { useContext, useRef } from "react"; + +export interface Commands { + toggleTestScenarioDock: () => void; +} + +const CommandsContext = React.createContext<{ + commandsRef: React.MutableRefObject; +}>({} as any); + +export function useCommands() { + return useContext(CommandsContext); +} + +export function CommandsContextProvider(props: React.PropsWithChildren<{}>) { + const commandsRef = useRef({ + toggleTestScenarioDock: () => { + throw new Error("Test Scenario EDITOR: toggleTestScenarioDock command not implemented."); + }, + }); + + return {props.children}; +} diff --git a/packages/scesim-editor/src/common/TestScenarioCommonFunctions.tsx b/packages/scesim-editor/src/common/TestScenarioCommonFunctions.tsx deleted file mode 100644 index cd9b95ca376..00000000000 --- a/packages/scesim-editor/src/common/TestScenarioCommonFunctions.tsx +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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 { - SceSim__FactMappingValueType, - SceSim__ScenarioSimulationModelType, - SceSim__expressionIdentifierType, - SceSim__factIdentifierType, -} from "@kie-tools/scesim-marshaller/dist/schemas/scesim-1_8/ts-gen/types"; -import * as React from "react"; - -/** - Given a List of FactMappingValues (Row of Cells), it founds the index of the list's element that matches with the - identifiers (factIdentifier and expressionIdentifier) fields. -*/ -export const retrieveFactMappingValueIndexByIdentifiers = ( - factMappingValues: SceSim__FactMappingValueType[], - factIdentifier: SceSim__factIdentifierType, - expressionIdentifier: SceSim__expressionIdentifierType -) => { - return factMappingValues.findIndex( - (factMappingValue) => - factMappingValue.factIdentifier.name?.__$$text == factIdentifier.name?.__$$text && - factMappingValue.factIdentifier.className?.__$$text == factIdentifier.className?.__$$text && - factMappingValue.expressionIdentifier.name?.__$$text == expressionIdentifier.name?.__$$text && - factMappingValue.expressionIdentifier.type?.__$$text == expressionIdentifier.type?.__$$text - ); -}; - -export const retrieveModelDescriptor = (scesimModel: SceSim__ScenarioSimulationModelType, isBackground: boolean) => { - if (isBackground) { - return scesimModel.background.scesimModelDescriptor; - } else { - return scesimModel.simulation.scesimModelDescriptor; - } -}; - -export const retrieveRowsDataFromModel = (scesimModel: SceSim__ScenarioSimulationModelType, isBackground: boolean) => { - if (isBackground) { - return scesimModel.background.scesimData.BackgroundData; - } else { - return scesimModel.simulation.scesimData.Scenario; - } -}; diff --git a/packages/scesim-editor/src/creation/TestScenarioCreationPanel.tsx b/packages/scesim-editor/src/creation/TestScenarioCreationPanel.tsx index 9dfd3812fca..679b924171b 100644 --- a/packages/scesim-editor/src/creation/TestScenarioCreationPanel.tsx +++ b/packages/scesim-editor/src/creation/TestScenarioCreationPanel.tsx @@ -18,6 +18,7 @@ */ import * as React from "react"; +import { useCallback } from "react"; import { Button } from "@patternfly/react-core/dist/js/components/Button"; import { Checkbox } from "@patternfly/react-core/dist/js/components/Checkbox"; @@ -33,36 +34,49 @@ import { Tooltip } from "@patternfly/react-core/dist/js/components/Tooltip"; import AddIcon from "@patternfly/react-icons/dist/esm/icons/add-circle-o-icon"; import CubesIcon from "@patternfly/react-icons/dist/esm/icons/cubes-icon"; -import { TestScenarioType } from "../TestScenarioEditor"; +import { useTestScenarioEditorStoreApi } from "../store/TestScenarioStoreContext"; import { useTestScenarioEditorI18n } from "../i18n"; import "./TestScenarioCreationPanel.css"; -function TestScenarioCreationPanel({ - onCreateScesimButtonClicked, -}: { - onCreateScesimButtonClicked: ( - assetType: string, - isStatelessSessionRule: boolean, - isTestSkipped: boolean, - kieSessionRule: string, - ruleFlowGroup: string - ) => void; -}) { +function TestScenarioCreationPanel() { const { i18n } = useTestScenarioEditorI18n(); const assetsOption = [ { value: "", label: i18n.creationPanel.assetsOption.noChoice, disabled: true }, - { value: TestScenarioType[TestScenarioType.DMN], label: i18n.creationPanel.assetsOption.dmn, disabled: false }, - { value: TestScenarioType[TestScenarioType.RULE], label: i18n.creationPanel.assetsOption.rule, disabled: false }, + { value: "DMN", label: i18n.creationPanel.assetsOption.dmn, disabled: false }, + { value: "RULE", label: i18n.creationPanel.assetsOption.rule, disabled: false }, ]; - const [assetType, setAssetType] = React.useState(""); + const [assetType, setAssetType] = React.useState<"" | "DMN" | "RULE">(""); const [isAutoFillTableEnabled, setAutoFillTableEnabled] = React.useState(true); const [isStatelessSessionRule, setStatelessSessionRule] = React.useState(false); const [isTestSkipped, setTestSkipped] = React.useState(false); const [kieSessionRule, setKieSessionRule] = React.useState(""); const [ruleFlowGroup, setRuleFlowGroup] = React.useState(""); + const testScenarioEditorStoreApi = useTestScenarioEditorStoreApi(); + + const createTestScenario = useCallback( + ( + assetType: string, + isStatelessSessionRule: boolean, + isTestSkipped: boolean, + kieSessionRule: string, + ruleFlowGroup: string + ) => + testScenarioEditorStoreApi.setState((state) => { + const settings = state.scesim.model.ScenarioSimulationModel.settings; + settings.dmnFilePath = assetType === "DMN" ? { __$$text: "./MockedDMNName.dmn" } : undefined; + settings.dmnName = assetType === "DMN" ? { __$$text: "MockedDMNName.dmn" } : undefined; + settings.dmnNamespace = assetType === "DMN" ? { __$$text: "https:\\kiegroup" } : undefined; + settings.dmoSession = assetType === "RULE" && kieSessionRule ? { __$$text: kieSessionRule } : undefined; + settings.ruleFlowGroup = assetType === "RULE" && ruleFlowGroup ? { __$$text: ruleFlowGroup } : undefined; + settings.skipFromBuild = { __$$text: isTestSkipped }; + settings.stateless = assetType === "RULE" ? { __$$text: isStatelessSessionRule } : undefined; + settings.type = { __$$text: assetType }; + }), + [testScenarioEditorStoreApi] + ); return ( @@ -75,7 +89,7 @@ function TestScenarioCreationPanel({ setAssetType(value)} + onChange={(value: "" | "DMN" | "RULE") => setAssetType(value)} value={assetType} > {assetsOption.map((option, index) => ( @@ -83,7 +97,7 @@ function TestScenarioCreationPanel({ ))} - {assetType === TestScenarioType[TestScenarioType.DMN] && ( + {assetType === "DMN" && ( <> @@ -111,7 +125,7 @@ function TestScenarioCreationPanel({ )} - {assetType === TestScenarioType[TestScenarioType.RULE] && ( + {assetType === "RULE" && ( <> } isDisabled={assetType == ""} onClick={() => - onCreateScesimButtonClicked(assetType, isStatelessSessionRule, isTestSkipped, kieSessionRule, ruleFlowGroup) + createTestScenario(assetType, isStatelessSessionRule, isTestSkipped, kieSessionRule, ruleFlowGroup) } variant="primary" > diff --git a/packages/scesim-editor/src/drawer/TestScenarioDrawerCheatSheetPanel.tsx b/packages/scesim-editor/src/drawer/TestScenarioDrawerCheatSheetPanel.tsx index c3b14567fdb..982456cf6c4 100644 --- a/packages/scesim-editor/src/drawer/TestScenarioDrawerCheatSheetPanel.tsx +++ b/packages/scesim-editor/src/drawer/TestScenarioDrawerCheatSheetPanel.tsx @@ -21,79 +21,58 @@ import * as React from "react"; import { Text, TextContent, TextList, TextListItem } from "@patternfly/react-core/dist/js/components/Text"; -import { TestScenarioType } from "../TestScenarioEditor"; import { useTestScenarioEditorI18n } from "../i18n"; +import { useTestScenarioEditorStore } from "../store/TestScenarioStoreContext"; -function TestScenarioDrawerCheatSheetPanel({ assetType }: { assetType: string }) { +function TestScenarioDrawerCheatSheetPanel() { const { i18n } = useTestScenarioEditorI18n(); + const settingsModel = useTestScenarioEditorStore((state) => state.scesim.model.ScenarioSimulationModel.settings); + const testScenarioType = settingsModel.type?.__$$text.toUpperCase(); return ( {i18n.drawer.cheatSheet.paragraph1} {i18n.drawer.cheatSheet.paragraph2( - assetType === TestScenarioType[TestScenarioType.DMN] - ? i18n.drawer.dataSelector.titleDMN - : i18n.drawer.dataSelector.titleRule + testScenarioType === "DMN" ? i18n.drawer.dataSelector.titleDMN : i18n.drawer.dataSelector.titleRule )} {i18n.drawer.cheatSheet.paragraph3(i18n.tab.backgroundTabTitle, i18n.tab.scenarioTabTitle)} {i18n.drawer.cheatSheet.paragraph4} - {assetType === TestScenarioType[TestScenarioType.DMN] && {i18n.drawer.cheatSheet.paragraph5DMN}} + {testScenarioType === "DMN" && {i18n.drawer.cheatSheet.paragraph5DMN}} - {assetType === TestScenarioType[TestScenarioType.DMN] - ? i18n.drawer.cheatSheet.paragraph6DMN - : i18n.drawer.cheatSheet.paragraph6Rule} + {testScenarioType === "DMN" ? i18n.drawer.cheatSheet.paragraph6DMN : i18n.drawer.cheatSheet.paragraph6Rule} - {assetType === TestScenarioType[TestScenarioType.DMN] - ? i18n.drawer.cheatSheet.expression1DMN - : i18n.drawer.cheatSheet.expression1Rule} + {testScenarioType === "DMN" ? i18n.drawer.cheatSheet.expression1DMN : i18n.drawer.cheatSheet.expression1Rule} - {assetType === TestScenarioType[TestScenarioType.DMN] - ? i18n.drawer.cheatSheet.expression2DMN - : i18n.drawer.cheatSheet.expression2Rule} + {testScenarioType === "DMN" ? i18n.drawer.cheatSheet.expression2DMN : i18n.drawer.cheatSheet.expression2Rule} - {assetType === TestScenarioType[TestScenarioType.DMN] - ? i18n.drawer.cheatSheet.expression3DMN - : i18n.drawer.cheatSheet.expression3Rule} + {testScenarioType === "DMN" ? i18n.drawer.cheatSheet.expression3DMN : i18n.drawer.cheatSheet.expression3Rule} - {assetType === TestScenarioType[TestScenarioType.DMN] - ? i18n.drawer.cheatSheet.expression4DMN - : i18n.drawer.cheatSheet.expression4Rule} + {testScenarioType === "DMN" ? i18n.drawer.cheatSheet.expression4DMN : i18n.drawer.cheatSheet.expression4Rule} - {assetType === TestScenarioType[TestScenarioType.DMN] - ? i18n.drawer.cheatSheet.expression5DMN - : i18n.drawer.cheatSheet.expression5Rule} + {testScenarioType === "DMN" ? i18n.drawer.cheatSheet.expression5DMN : i18n.drawer.cheatSheet.expression5Rule} + T - {assetType === TestScenarioType[TestScenarioType.DMN] - ? i18n.drawer.cheatSheet.expression6DMN - : i18n.drawer.cheatSheet.expression6Rule} + {testScenarioType === "DMN" ? i18n.drawer.cheatSheet.expression6DMN : i18n.drawer.cheatSheet.expression6Rule} - {assetType === TestScenarioType[TestScenarioType.DMN] - ? i18n.drawer.cheatSheet.expression7DMN - : i18n.drawer.cheatSheet.expression7Rule} + {testScenarioType === "DMN" ? i18n.drawer.cheatSheet.expression7DMN : i18n.drawer.cheatSheet.expression7Rule} - {assetType === TestScenarioType[TestScenarioType.DMN] - ? i18n.drawer.cheatSheet.expression8DMN - : i18n.drawer.cheatSheet.expression8Rule} + {testScenarioType === "DMN" ? i18n.drawer.cheatSheet.expression8DMN : i18n.drawer.cheatSheet.expression8Rule} - {assetType === TestScenarioType[TestScenarioType.DMN] - ? i18n.drawer.cheatSheet.expression9DMN - : i18n.drawer.cheatSheet.expression9Rule} + {testScenarioType === "DMN" ? i18n.drawer.cheatSheet.expression9DMN : i18n.drawer.cheatSheet.expression9Rule} - {assetType === TestScenarioType[TestScenarioType.DMN] && ( - {i18n.drawer.cheatSheet.expression10DMN} - )} + {testScenarioType === "DMN" && {i18n.drawer.cheatSheet.expression10DMN}} ); diff --git a/packages/scesim-editor/src/drawer/TestScenarioDrawerDataSelectorPanel.tsx b/packages/scesim-editor/src/drawer/TestScenarioDrawerDataSelectorPanel.tsx index d1a1d554ea7..f6aebaa087b 100644 --- a/packages/scesim-editor/src/drawer/TestScenarioDrawerDataSelectorPanel.tsx +++ b/packages/scesim-editor/src/drawer/TestScenarioDrawerDataSelectorPanel.tsx @@ -34,24 +34,14 @@ import { Tooltip } from "@patternfly/react-core/dist/js/components/Tooltip/"; import { TreeView, TreeViewDataItem, TreeViewSearch } from "@patternfly/react-core/dist/js/components/TreeView/"; import { WarningTriangleIcon } from "@patternfly/react-icons/dist/esm/icons/warning-triangle-icon"; -import { SceSimModel } from "@kie-tools/scesim-marshaller"; -import { - SceSim__FactMappingType, - SceSim__FactMappingValuesTypes, - SceSim__expressionElementsType, -} from "@kie-tools/scesim-marshaller/dist/schemas/scesim-1_8/ts-gen/types"; - -import { TestScenarioDataObject, TestScenarioSelectedColumnMetaData, TestScenarioType } from "../TestScenarioEditor"; -import { useTestScenarioEditorI18n } from "../i18n"; +import { SceSim__expressionElementsType } from "@kie-tools/scesim-marshaller/dist/schemas/scesim-1_8/ts-gen/types"; -import { EMPTY_TYPE, TEST_SCENARIO_EXPRESSION_TYPE } from "../common/TestScenarioCommonConstants"; -import { - retrieveFactMappingValueIndexByIdentifiers, - retrieveModelDescriptor, - retrieveRowsDataFromModel, -} from "../common/TestScenarioCommonFunctions"; +import { useTestScenarioEditorI18n } from "../i18n"; import "./TestScenarioDrawerDataSelectorPanel.css"; +import { useTestScenarioEditorStore, useTestScenarioEditorStoreApi } from "../store/TestScenarioStoreContext"; +import { TestScenarioDataObject, TestScenarioEditorTab } from "../store/TestScenarioEditorStore"; +import { updateColumn } from "../mutations/updateColumn"; const enum TestScenarioDataSelectorState { DISABLED, // All subcomponents are DISABLED @@ -59,22 +49,19 @@ const enum TestScenarioDataSelectorState { TREEVIEW_ENABLED_ONLY, // TreeView component is enabled only, in a read only mode (when a column is selected) } -function TestScenarioDataSelectorPanel({ - assetType, - dataObjects, - scesimModel, - selectedColumnMetadata, - updateSelectedColumnMetaData, - updateTestScenarioModel, -}: { - assetType: string; - dataObjects: TestScenarioDataObject[]; - scesimModel: SceSimModel; - selectedColumnMetadata: TestScenarioSelectedColumnMetaData | null; - updateSelectedColumnMetaData: React.Dispatch>; - updateTestScenarioModel: React.Dispatch>; -}) { +function TestScenarioDataSelectorPanel() { const { i18n } = useTestScenarioEditorI18n(); + const dataObjects = useTestScenarioEditorStore((state) => state.computed(state).getTestScenarioDataObjects()); + const scesimModel = useTestScenarioEditorStore((state) => state.scesim.model); + const tableStatus = useTestScenarioEditorStore((state) => state.table); + const tabStatus = useTestScenarioEditorStore((state) => state.navigation.tab); + const testScenarioEditorStoreApi = useTestScenarioEditorStoreApi(); + const testScenarioType = scesimModel.ScenarioSimulationModel.settings.type?.__$$text.toUpperCase(); + + const selectedColumnMetadata = + tabStatus === TestScenarioEditorTab.SIMULATION + ? tableStatus.simulation.selectedColumn + : tableStatus.background.selectedColumn; const [allExpanded, setAllExpanded] = useState(false); const [dataSelectorStatus, setDataSelectorStatus] = useState(TestScenarioDataSelectorState.DISABLED); @@ -171,8 +158,9 @@ function TestScenarioDataSelectorPanel({ /** It filters out all the Data Objects and their Children already assigned in the table */ const filterOutAlreadyAssignedDataObjectsAndChildren = useCallback( (expressionElement: SceSim__expressionElementsType, isBackground: boolean) => { - const testScenarioDescriptor = retrieveModelDescriptor(scesimModel.ScenarioSimulationModel, isBackground); - + const testScenarioDescriptor = isBackground + ? scesimModel.ScenarioSimulationModel.background.scesimModelDescriptor + : scesimModel.ScenarioSimulationModel.simulation.scesimModelDescriptor; const assignedExpressionElements = testScenarioDescriptor.factMappings.FactMapping!.map( (factMapping) => factMapping.expressionElements! ); @@ -233,9 +221,9 @@ function TestScenarioDataSelectorPanel({ * - All the NOT-assigned fields of the selected column instance * - All the NOT-assigned fields of the NOT-ASSIGNED instances, if the selected column doesn't have an instance (1th level header) assigned */ - if (selectedColumnMetadata.factMapping.className.__$$text === EMPTY_TYPE) { + if (selectedColumnMetadata.factMapping.className.__$$text === "java.lang.Void") { const isFactIdentifierAssigned = - selectedColumnMetadata.factMapping.factIdentifier.className!.__$$text !== EMPTY_TYPE; + selectedColumnMetadata.factMapping.factIdentifier.className!.__$$text !== "java.lang.Void"; let filteredDataObjects: TestScenarioDataObject[] = []; if (isFactIdentifierAssigned) { @@ -245,10 +233,9 @@ function TestScenarioDataSelectorPanel({ selectedColumnMetadata.isBackground ); } else { - const testScenarioDescriptor = retrieveModelDescriptor( - scesimModel.ScenarioSimulationModel, - selectedColumnMetadata.isBackground - ); + const testScenarioDescriptor = selectedColumnMetadata.isBackground + ? scesimModel.ScenarioSimulationModel.background.scesimModelDescriptor + : scesimModel.ScenarioSimulationModel.simulation.scesimModelDescriptor; const assignedExpressionElements = testScenarioDescriptor.factMappings.FactMapping!.map( (factMapping) => factMapping.expressionElements! ); @@ -286,12 +273,10 @@ function TestScenarioDataSelectorPanel({ */ const factIdentifier = selectedColumnMetadata.factMapping.expressionElements!.ExpressionElement![0].step.__$$text; const filteredDataObjects = dataObjects.filter((dataObject) => filterTypesItems(dataObject, factIdentifier)); - const isExpressionType = - selectedColumnMetadata.factMapping.factMappingValueType!.__$$text === - TEST_SCENARIO_EXPRESSION_TYPE[TEST_SCENARIO_EXPRESSION_TYPE.EXPRESSION]; + const isExpressionType = selectedColumnMetadata.factMapping.factMappingValueType!.__$$text === "EXPRESSION"; const isSimpleTypeFact = selectedColumnMetadata.factMapping.expressionElements!.ExpressionElement!.length === 1 && - selectedColumnMetadata.factMapping.className.__$$text !== EMPTY_TYPE; + selectedColumnMetadata.factMapping.className.__$$text !== "java.lang.Void"; let fieldID: string; if (isExpressionType) { fieldID = selectedColumnMetadata.factMapping.expressionElements!.ExpressionElement![0].step.__$$text; @@ -303,7 +288,7 @@ function TestScenarioDataSelectorPanel({ .join("."); } - //TODO 1 This not work with multiple level and expressions fields. + //TODO 1 This not work with multiple level and expressions fields. see kie-issues#1514 const treeViewItemToActivate = filteredDataObjects .reduce((acc: TestScenarioDataObject[], item) => { return item.children ? acc.concat(item.children) : acc; @@ -332,25 +317,25 @@ function TestScenarioDataSelectorPanel({ const treeViewEmptyIcon = filteredItems.length === 0 ? WarningTriangleIcon : WarningTriangleIcon; const title = dataObjects.length === 0 - ? assetType === TestScenarioType[TestScenarioType.DMN] + ? testScenarioType === "DMN" ? i18n.drawer.dataSelector.emptyDataObjectsTitleDMN : i18n.drawer.dataSelector.emptyDataObjectsTitleRule : "No more properties"; //TODO CHANGE const description = dataObjects.length === 0 - ? assetType === TestScenarioType[TestScenarioType.DMN] + ? testScenarioType === "DMN" ? i18n.drawer.dataSelector.emptyDataObjectsDescriptionDMN : i18n.drawer.dataSelector.emptyDataObjectsDescriptionRule : "All the properties have been already assigned"; //TODO CHANGE { - assetType === TestScenarioType[TestScenarioType.DMN] + testScenarioType === "DMN" ? i18n.drawer.dataSelector.emptyDataObjectsTitleDMN : i18n.drawer.dataSelector.emptyDataObjectsTitleRule; } return { description: description, enabled: isTreeViewNotEmpty, icon: treeViewEmptyIcon, title: title }; - }, [assetType, dataObjects.length, filteredItems.length, i18n]); + }, [testScenarioType, dataObjects.length, filteredItems.length, i18n]); const insertDataObjectButtonStatus = useMemo(() => { if (!selectedColumnMetadata) { @@ -391,106 +376,49 @@ function TestScenarioDataSelectorPanel({ // CHECK const onInsertDataObjectClick = useCallback( - /** TODO 2 : NEED A POPUP ASKING IF WE WANT TO REPLACE VALUES OR NOT */ - + /** TODO 2 : NEED A POPUP ASKING IF WE WANT TO REPLACE VALUES OR NOT see kie-issues#1514 */ () => { - updateTestScenarioModel((prevState) => { - const isBackground = selectedColumnMetadata!.isBackground; - const factMappings = retrieveModelDescriptor(prevState.ScenarioSimulationModel, isBackground).factMappings - .FactMapping!; - const deepClonedFactMappings = JSON.parse(JSON.stringify(factMappings)); - const isRootType = isDataObjectRootParent(dataObjects, treeViewStatus.activeItems[0].id!.toString()); - const rootDataObject = findDataObjectRootParent(dataObjects, treeViewStatus.activeItems[0].id!.toString()); - - const className = treeViewStatus.activeItems[0].customBadgeContent!.toString(); - const expressionAlias = isRootType ? "Expression " : treeViewStatus.activeItems[0].name!.toString(); - const expressionElementsSteps = treeViewStatus.activeItems[0].id!.split(".").filter((step) => !!step.trim()); //WARNING !!!! THIS DOESN'T WORK WITH IMPORTED DATA OBJECTS - const factName = treeViewStatus.activeItems[0].id!.split(".")[0]; //WARNING !!!! THIS DOESN'T WORK WITH IMPORTED DATA OBJECTS - const factClassName = isRootType - ? treeViewStatus.activeItems[0].customBadgeContent!.toString() - : rootDataObject.customBadgeContent!.toString(); - const factMappingValueType = isRootType - ? TEST_SCENARIO_EXPRESSION_TYPE[TEST_SCENARIO_EXPRESSION_TYPE.EXPRESSION] - : TEST_SCENARIO_EXPRESSION_TYPE[TEST_SCENARIO_EXPRESSION_TYPE.NOT_EXPRESSION]; - - const factMappingToUpdate: SceSim__FactMappingType = deepClonedFactMappings[selectedColumnMetadata!.index]; - factMappingToUpdate.className = { __$$text: className }; - factMappingToUpdate.factAlias = { __$$text: factName }; - factMappingToUpdate.factIdentifier.className = { __$$text: factClassName }; - factMappingToUpdate.factIdentifier.name = { __$$text: factName }; - factMappingToUpdate.factMappingValueType = { __$$text: factMappingValueType }; - factMappingToUpdate.expressionAlias = { __$$text: expressionAlias }; - factMappingToUpdate.expressionElements = { - ExpressionElement: expressionElementsSteps.map((ee) => { - return { step: { __$$text: ee } }; - }), - }; - - const deepClonedRowsData: SceSim__FactMappingValuesTypes[] = JSON.parse( - JSON.stringify(retrieveRowsDataFromModel(prevState.ScenarioSimulationModel, isBackground)) - ); - - deepClonedRowsData.forEach((fmv, index) => { - const factMappingValues = fmv.factMappingValues.FactMappingValue!; - const newFactMappingValues = [...factMappingValues]; - - const factMappingValueToUpdateIndex = retrieveFactMappingValueIndexByIdentifiers( - newFactMappingValues, - selectedColumnMetadata!.factMapping.factIdentifier, - selectedColumnMetadata!.factMapping.expressionIdentifier - ); - const factMappingValueToUpdate = factMappingValues[factMappingValueToUpdateIndex]; - newFactMappingValues[factMappingValueToUpdateIndex] = { - ...factMappingValueToUpdate, - factIdentifier: { className: { __$$text: factClassName }, name: { __$$text: factName } }, - // rawValue: { - // __$$text: update.value, //TODO 2 related - // }, - }; - - deepClonedRowsData[index].factMappingValues.FactMappingValue = newFactMappingValues; + const isBackground = selectedColumnMetadata!.isBackground; + const isRootType = isDataObjectRootParent(dataObjects, treeViewStatus.activeItems[0].id!.toString()); + const rootDataObject = findDataObjectRootParent(dataObjects, treeViewStatus.activeItems[0].id!.toString()); + const className = treeViewStatus.activeItems[0].customBadgeContent!.toString(); + const expressionAlias = isRootType ? "Expression " : treeViewStatus.activeItems[0].name!.toString(); + const expressionElementsSteps = treeViewStatus.activeItems[0].id!.split(".").filter((step) => !!step.trim()); //WARNING !!!! THIS DOESN'T WORK WITH IMPORTED DATA OBJECTS see kie-issues#1514 + const factName = treeViewStatus.activeItems[0].id!.split(".")[0]; //WARNING !!!! THIS DOESN'T WORK WITH IMPORTED DATA OBJECTS see kie-issues#1514 + const factClassName = isRootType + ? treeViewStatus.activeItems[0].customBadgeContent!.toString() + : rootDataObject.customBadgeContent!.toString(); + const factMappingValueType = isRootType ? "EXPRESSION" : "NOT_EXPRESSION"; + + testScenarioEditorStoreApi.setState((state) => { + const factMappings = isBackground + ? state.scesim.model.ScenarioSimulationModel.background.scesimModelDescriptor.factMappings.FactMapping! + : state.scesim.model.ScenarioSimulationModel.simulation.scesimModelDescriptor.factMappings.FactMapping!; + const factMappingValuesTypes = isBackground + ? state.scesim.model.ScenarioSimulationModel.background.scesimData.BackgroundData! + : state.scesim.model.ScenarioSimulationModel.simulation.scesimData.Scenario!; + + const { updatedFactMapping } = updateColumn({ + className: className, + expressionAlias: expressionAlias, + expressionElementsSteps: expressionElementsSteps, + expressionIdentifierName: selectedColumnMetadata!.factMapping.expressionIdentifier.name?.__$$text, + expressionIdentifierType: selectedColumnMetadata!.factMapping.expressionIdentifier.type?.__$$text, + factMappings: factMappings, + factClassName: factClassName, + factIdentifierClassName: selectedColumnMetadata!.factMapping.factIdentifier.className?.__$$text, + factIdentifierName: selectedColumnMetadata!.factMapping.factIdentifier.name?.__$$text, + factMappingValuesTypes: factMappingValuesTypes, + factMappingValueType: factMappingValueType, + factName: factName, + selectedColumnIndex: selectedColumnMetadata!.index, }); - /** Updating the selectedColumn */ - updateSelectedColumnMetaData({ - factMapping: JSON.parse(JSON.stringify(factMappingToUpdate)), + state.dispatch(state).table.updateSelectedColumn({ + factMapping: updatedFactMapping, index: selectedColumnMetadata!.index, isBackground: isBackground, }); - - return { - ScenarioSimulationModel: { - ...prevState.ScenarioSimulationModel, - simulation: { - scesimModelDescriptor: { - factMappings: { - FactMapping: isBackground - ? prevState.ScenarioSimulationModel.simulation.scesimModelDescriptor.factMappings.FactMapping - : deepClonedFactMappings, - }, - }, - scesimData: { - Scenario: isBackground - ? prevState.ScenarioSimulationModel.simulation.scesimData.Scenario - : deepClonedRowsData, - }, - }, - background: { - scesimModelDescriptor: { - factMappings: { - FactMapping: isBackground - ? deepClonedFactMappings - : prevState.ScenarioSimulationModel.background.scesimModelDescriptor.factMappings.FactMapping, - }, - }, - scesimData: { - BackgroundData: isBackground - ? deepClonedRowsData - : prevState.ScenarioSimulationModel.background.scesimData.BackgroundData, - }, - }, - }, - }; }); }, [ @@ -498,9 +426,8 @@ function TestScenarioDataSelectorPanel({ findDataObjectRootParent, isDataObjectRootParent, selectedColumnMetadata, + testScenarioEditorStoreApi, treeViewStatus.activeItems, - updateSelectedColumnMetaData, - updateTestScenarioModel, ] ); @@ -552,12 +479,12 @@ function TestScenarioDataSelectorPanel({ return ( <> - {assetType === TestScenarioType[TestScenarioType.DMN] + {testScenarioType === "DMN" ? i18n.drawer.dataSelector.descriptionDMN : i18n.drawer.dataSelector.descriptionRule} void; - onUpdateSettingField: (field: string, value: boolean | string) => void; - scesimModel: SceSimModel; - selectedColumnMetaData: TestScenarioSelectedColumnMetaData | null; - selectedDock: TestScenarioEditorDock; - testScenarioSettings: TestScenarioSettings; - updateSelectedColumnMetaData: React.Dispatch>; - updateTestScenarioModel: React.Dispatch>; -}) { +function TestScenarioDrawerPanel({ onDrawerClose }: { onDrawerClose: () => void }) { const { i18n } = useTestScenarioEditorI18n(); + const navigation = useTestScenarioEditorStore((state) => state.navigation); + const settingsModel = useTestScenarioEditorStore((state) => state.scesim.model.ScenarioSimulationModel.settings); + const testScenarioType = settingsModel.type?.__$$text.toUpperCase(); return ( @@ -77,17 +51,17 @@ function TestScenarioDrawerPanel({ {(() => { - switch (selectedDock) { + switch (navigation.dock.selected) { case TestScenarioEditorDock.CHEATSHEET: return i18n.drawer.cheatSheet.title; case TestScenarioEditorDock.DATA_OBJECT: - return testScenarioSettings.assetType === TestScenarioType[TestScenarioType.DMN] + return testScenarioType === "DMN" ? i18n.drawer.dataSelector.titleDMN : i18n.drawer.dataSelector.titleRule; case TestScenarioEditorDock.SETTINGS: return i18n.drawer.settings.title; default: - throw new Error("Wrong state, an invalid dock has been selected " + selectedDock); + throw new Error("Wrong state, an invalid dock has been selected " + navigation.dock.selected); } })()} @@ -96,30 +70,15 @@ function TestScenarioDrawerPanel({ {(() => { - switch (selectedDock) { + switch (navigation.dock.selected) { case TestScenarioEditorDock.CHEATSHEET: - return ; + return ; case TestScenarioEditorDock.DATA_OBJECT: - return ( - - ); + return ; case TestScenarioEditorDock.SETTINGS: - return ( - - ); + return ; default: - throw new Error("Wrong state, an invalid dock has been selected " + selectedDock); + throw new Error("Wrong state, an invalid dock has been selected " + navigation.dock.selected); } })()} diff --git a/packages/scesim-editor/src/drawer/TestScenarioDrawerSettingsPanel.tsx b/packages/scesim-editor/src/drawer/TestScenarioDrawerSettingsPanel.tsx index 6e6f421e9a4..d8dc56ea324 100644 --- a/packages/scesim-editor/src/drawer/TestScenarioDrawerSettingsPanel.tsx +++ b/packages/scesim-editor/src/drawer/TestScenarioDrawerSettingsPanel.tsx @@ -17,58 +17,74 @@ * under the License. */ import * as React from "react"; +import { useCallback } from "react"; import { Checkbox } from "@patternfly/react-core/dist/esm/components/Checkbox"; import { FormSelect, FormSelectOption } from "@patternfly/react-core/dist/esm/components/FormSelect"; +import { HelpIcon } from "@patternfly/react-icons/dist/esm/icons/help-icon"; +import { Icon } from "@patternfly/react-core/dist/esm/components/Icon/Icon"; import { TextInput } from "@patternfly/react-core/dist/js/components/TextInput"; import { Title } from "@patternfly/react-core/dist/js/components/Title"; +import { Tooltip } from "@patternfly/react-core/dist/esm/components/Tooltip"; -import { TestScenarioSettings, TestScenarioType } from "../TestScenarioEditor"; -import { useTestScenarioEditorI18n } from "../i18n"; +import { SceSim__settingsType } from "@kie-tools/scesim-marshaller/dist/schemas/scesim-1_8/ts-gen/types"; -import { HelpIcon } from "@patternfly/react-icons/dist/esm/icons/help-icon"; -import { Icon } from "@patternfly/react-core/dist/esm/components/Icon/Icon"; -import { Tooltip } from "@patternfly/react-core/dist/esm/components/Tooltip"; +import { useTestScenarioEditorI18n } from "../i18n"; +import { useTestScenarioEditorStore, useTestScenarioEditorStoreApi } from "../store/TestScenarioStoreContext"; import "./TestScenarioDrawerSettingsPanel.css"; +import { useTestScenarioEditor } from "../TestScenarioEditorContext"; -function TestScenarioDrawerSettingsPanel({ - fileName, - onUpdateSettingField, - testScenarioSettings, -}: { - fileName: string; - onUpdateSettingField: (field: string, value: boolean | string) => void; - testScenarioSettings: TestScenarioSettings; -}) { +function TestScenarioDrawerSettingsPanel() { const { i18n } = useTestScenarioEditorI18n(); + const { openFileNormalizedPosixPathRelativeToTheWorkspaceRoot } = useTestScenarioEditor(); + const settingsModel = useTestScenarioEditorStore((state) => state.scesim.model.ScenarioSimulationModel.settings); + const testScenarioEditorStoreApi = useTestScenarioEditorStoreApi(); + const testScenarioType = settingsModel.type?.__$$text.toUpperCase(); + + const updateSettingsField = useCallback( + (fieldName: keyof SceSim__settingsType, value: string | boolean) => + testScenarioEditorStoreApi.setState((state) => { + (state.scesim.model.ScenarioSimulationModel.settings[fieldName] as { __$$text: string | boolean }) = { + __$$text: value, + }; + }), + [testScenarioEditorStoreApi] + ); return ( <> {i18n.drawer.settings.fileName} - + {i18n.drawer.settings.assetType} - {testScenarioSettings.assetType === TestScenarioType[TestScenarioType.DMN] ? ( + {testScenarioType === "DMN" ? ( <> {i18n.drawer.settings.dmnModel} {/* Temporary Mocked */} @@ -77,19 +93,21 @@ function TestScenarioDrawerSettingsPanel({ {i18n.drawer.settings.dmnName} {i18n.drawer.settings.dmnNameSpace} ) : ( @@ -103,11 +121,12 @@ function TestScenarioDrawerSettingsPanel({ onUpdateSettingField("dmoSession", value)} + onChange={(value) => updateSettingsField("dmoSession", value)} placeholder={i18n.drawer.settings.kieSessionRulePlaceholder} type="text" - value={testScenarioSettings.kieSessionRule} + value={settingsModel.dmoSession?.__$$text} /> {i18n.drawer.settings.ruleFlowGroup} @@ -118,19 +137,20 @@ function TestScenarioDrawerSettingsPanel({ </Tooltip> onUpdateSettingField("ruleFlowGroup", value)} + onChange={(value) => updateSettingsField("ruleFlowGroup", value)} placeholder={i18n.drawer.settings.ruleFlowGroupPlaceholder} type="text" - value={testScenarioSettings.ruleFlowGroup} + value={settingsModel.ruleFlowGroup?.__$$text} />
onUpdateSettingField("stateless", value)} + onChange={(value) => updateSettingsField("stateless", value)} />
@@ -145,9 +165,9 @@ function TestScenarioDrawerSettingsPanel({
onUpdateSettingField("skipFromBuild", value)} + onChange={(value) => updateSettingsField("skipFromBuild", value)} />
diff --git a/packages/scesim-editor/src/externalModels/TestScenarioEditorDependenciesContext.tsx b/packages/scesim-editor/src/externalModels/TestScenarioEditorDependenciesContext.tsx new file mode 100644 index 00000000000..b74b9447f3d --- /dev/null +++ b/packages/scesim-editor/src/externalModels/TestScenarioEditorDependenciesContext.tsx @@ -0,0 +1,64 @@ +/* + * 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 * as React from "react"; +import { useContext, useMemo } from "react"; +import { + OnRequestExternalModelsAvailableToInclude, + OnRequestExternalModelByPath, + ExternalDmnsIndex, +} from "../TestScenarioEditor"; + +export interface TestScenarioEditorExternalModelsContextType { + onRequestExternalModelByPath?: OnRequestExternalModelByPath; + onRequestExternalModelsAvailableToInclude?: OnRequestExternalModelsAvailableToInclude; + externalModelsByNamespace?: ExternalDmnsIndex; +} + +const TestScenarioEditorExternalModelsContext = React.createContext( + {} as any +); + +export function useExternalModels() { + return useContext(TestScenarioEditorExternalModelsContext); +} + +export function TestScenarioEditorExternalModelsContextProvider( + _props: React.PropsWithChildren +) { + const { children, ...props } = _props; + + const value = useMemo(() => { + return { + externalModelsByNamespace: props.externalModelsByNamespace, + onRequestExternalModelByPath: props.onRequestExternalModelByPath, + onRequestExternalModelsAvailableToInclude: props.onRequestExternalModelsAvailableToInclude, + }; + }, [ + props.externalModelsByNamespace, + props.onRequestExternalModelByPath, + props.onRequestExternalModelsAvailableToInclude, + ]); + + return ( + + {children} + + ); +} diff --git a/packages/runtime-tools-task-console-webapp/src/env/Env.ts b/packages/scesim-editor/src/hook/useEffectAfterFirstRender.ts similarity index 65% rename from packages/runtime-tools-task-console-webapp/src/env/Env.ts rename to packages/scesim-editor/src/hook/useEffectAfterFirstRender.ts index 449d6e97419..df84f4b1ae9 100644 --- a/packages/runtime-tools-task-console-webapp/src/env/Env.ts +++ b/packages/scesim-editor/src/hook/useEffectAfterFirstRender.ts @@ -17,20 +17,16 @@ * under the License. */ -import { ENV_FILE_PATH } from "./EnvConstants"; -import { EnvJson } from "./EnvJson"; +import { useEffect, useRef } from "react"; -export async function initEnv() { - return fetch(ENV_FILE_PATH) - .then(async (response) => { - if (!response.ok) { - throw new Error(`Failed to fetch ${ENV_FILE_PATH}: ${response.statusText}`); - } +export function useEffectAfterFirstRender(effect: Parameters[0], b: React.DependencyList) { + const didMountRef = useRef(false); - const envJson = await response.json(); - return envJson as EnvJson; - }) - .catch((e) => { - console.error(e); - }); + useEffect(() => { + if (didMountRef.current) { + return effect(); + } + didMountRef.current = true; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, b); } diff --git a/packages/scesim-editor/src/i18n/TestScenarioEditorI18n.ts b/packages/scesim-editor/src/i18n/TestScenarioEditorI18n.ts index be68682f4d4..1eaebb8771b 100644 --- a/packages/scesim-editor/src/i18n/TestScenarioEditorI18n.ts +++ b/packages/scesim-editor/src/i18n/TestScenarioEditorI18n.ts @@ -115,6 +115,12 @@ interface TestScenarioEditorDictionary extends ReferenceDictionary { title: string; }; }; + errorFallBack: { + title: string; + body: string; + lastActionButton: string; + fileIssueHref: string; + }; sidebar: { cheatSheetTooltip: string; dataSelectorTooltip: string; diff --git a/packages/scesim-editor/src/i18n/locales/en.ts b/packages/scesim-editor/src/i18n/locales/en.ts index 72de8ce02cc..888f1e2b871 100644 --- a/packages/scesim-editor/src/i18n/locales/en.ts +++ b/packages/scesim-editor/src/i18n/locales/en.ts @@ -137,6 +137,12 @@ export const en: TestScenarioEditorI18n = { title: "Settings", }, }, + errorFallBack: { + title: "An unexpected error happened", + body: "This is a bug. Please consider reporting it so the DMN Editor can continue improving. See the details below.", + lastActionButton: "Try undoing last action", + fileIssueHref: "File an issue", + }, sidebar: { cheatSheetTooltip: "CheatSheet: Useful information for Test Scenario Usage", dataSelectorTooltip: "Selector: It provides a tool to edit your Scenarios", diff --git a/packages/scesim-editor/src/mutations/addColumn.ts b/packages/scesim-editor/src/mutations/addColumn.ts new file mode 100644 index 00000000000..ab5a22bf7a3 --- /dev/null +++ b/packages/scesim-editor/src/mutations/addColumn.ts @@ -0,0 +1,183 @@ +/* + * 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 _ from "lodash"; +import { v4 as uuid } from "uuid"; + +import { + SceSim__FactMappingType, + SceSim__FactMappingValuesTypes, +} from "@kie-tools/scesim-marshaller/dist/schemas/scesim-1_8/ts-gen/types"; +import { InsertRowColumnsDirection } from "@kie-tools/boxed-expression-component/dist/api/BeeTable"; + +export function addColumn({ + beforeIndex, + factMappings, + factMappingValues, + insertDirection, + isInstance, + selectedColumnFactMappingIndex, +}: { + beforeIndex: number; + factMappings: SceSim__FactMappingType[]; + factMappingValues: SceSim__FactMappingValuesTypes[]; + insertDirection: InsertRowColumnsDirection; + isInstance: boolean; + selectedColumnFactMappingIndex: number; +}) { + const selectedColumnFactMapping = factMappings[selectedColumnFactMappingIndex]; + const targetColumnIndex = determineNewColumnTargetIndex( + factMappings, + insertDirection, + isInstance, + selectedColumnFactMappingIndex, + selectedColumnFactMapping + ); + + const instanceDefaultNames = factMappings + .filter((factMapping) => factMapping.factAlias!.__$$text.startsWith("INSTANCE-")) + .map((factMapping) => factMapping.factAlias!.__$$text); + + const isNewInstance = isInstance || selectedColumnFactMapping.factIdentifier.className?.__$$text === "java.lang.Void"; + + const newFactMapping = { + className: { __$$text: "java.lang.Void" }, + columnWidth: { __$$text: 150 }, + expressionAlias: { __$$text: "PROPERTY" }, + expressionElements: isNewInstance + ? undefined + : { + ExpressionElement: [ + { + step: { + __$$text: selectedColumnFactMapping.expressionElements!.ExpressionElement![0].step.__$$text, + }, + }, + ], + }, + expressionIdentifier: { + name: { __$$text: `_${uuid()}`.toLocaleUpperCase() }, + type: { __$$text: selectedColumnFactMapping.expressionIdentifier.type!.__$$text }, + }, + factAlias: { + __$$text: isNewInstance + ? getNextAvailablePrefixedName(instanceDefaultNames, "INSTANCE") + : selectedColumnFactMapping.factAlias.__$$text, + }, + factIdentifier: { + name: { + __$$text: isNewInstance + ? getNextAvailablePrefixedName(instanceDefaultNames, "INSTANCE") + : selectedColumnFactMapping.factIdentifier.name!.__$$text, + }, + className: { + __$$text: isNewInstance ? "java.lang.Void" : selectedColumnFactMapping.factIdentifier.className!.__$$text, + }, + }, + factMappingValueType: { __$$text: "NOT_EXPRESSION" }, + }; + + factMappings.splice(targetColumnIndex, 0, newFactMapping); + + factMappingValues.forEach((scenario) => { + scenario.factMappingValues.FactMappingValue!.splice(beforeIndex + 1, 0, { + expressionIdentifier: { + name: { __$$text: newFactMapping.expressionIdentifier.name.__$$text }, + type: { __$$text: newFactMapping.expressionIdentifier.type.__$$text }, + }, + factIdentifier: { + name: { __$$text: newFactMapping.factIdentifier.name.__$$text }, + className: { __$$text: newFactMapping.factIdentifier.className.__$$text }, + }, + rawValue: { __$$text: "", "@_class": "string" }, + }); + }); +} + +/* It determines in which index position a column should be added. In case of a field, the new column index is simply + in the right or in the left of the selected column. In case of a new instance, it's required to find the first column + index outside the selected Instance group. */ +const determineNewColumnTargetIndex = ( + factMappings: SceSim__FactMappingType[], + insertDirection: InsertRowColumnsDirection, + isInstance: boolean, + selectedColumnIndex: number, + selectedFactMapping: SceSim__FactMappingType +) => { + const groupType = selectedFactMapping.expressionIdentifier.type!.__$$text; + const instanceName = selectedFactMapping.factIdentifier.name!.__$$text; + const instanceType = selectedFactMapping.factIdentifier.className!.__$$text; + + if (!isInstance) { + if (insertDirection === InsertRowColumnsDirection.AboveOrRight) { + return selectedColumnIndex + 1; + } else { + return selectedColumnIndex; + } + } + + let newColumnTargetColumn = -1; + + if (insertDirection === InsertRowColumnsDirection.AboveOrRight) { + for (let i = selectedColumnIndex; i < factMappings.length; i++) { + const currentFM = factMappings[i]; + if ( + currentFM.expressionIdentifier.type!.__$$text === groupType && + currentFM.factIdentifier.name?.__$$text === instanceName && + currentFM.factIdentifier.className?.__$$text === instanceType + ) { + if (i == factMappings.length - 1) { + newColumnTargetColumn = i + 1; + } + } else { + newColumnTargetColumn = i; + break; + } + } + } else { + for (let i = selectedColumnIndex; i >= 0; i--) { + const currentFM = factMappings[i]; + + if ( + currentFM.expressionIdentifier.type!.__$$text === groupType && + currentFM.factIdentifier.name?.__$$text === instanceName && + currentFM.factIdentifier.className?.__$$text === instanceType + ) { + if (i == 0) { + newColumnTargetColumn = 0; + } + } else { + newColumnTargetColumn = i + 1; + break; + } + } + } + + return newColumnTargetColumn; +}; + +const getNextAvailablePrefixedName = ( + names: string[], + namePrefix: string, + lastIndex: number = names.length +): string => { + const candidate = `${namePrefix}-${lastIndex + 1}`; + const elemWithCandidateName = names.indexOf(candidate); + return elemWithCandidateName >= 0 ? getNextAvailablePrefixedName(names, namePrefix, lastIndex + 1) : candidate; +}; diff --git a/packages/scesim-editor/src/mutations/addRow.ts b/packages/scesim-editor/src/mutations/addRow.ts new file mode 100644 index 00000000000..65887921b4e --- /dev/null +++ b/packages/scesim-editor/src/mutations/addRow.ts @@ -0,0 +1,56 @@ +/* + * 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 { + SceSim__FactMappingType, + SceSim__FactMappingValuesTypes, +} from "@kie-tools/scesim-marshaller/dist/schemas/scesim-1_8/ts-gen/types"; + +export function addRow({ + beforeIndex, + factMappings, + factMappingValues, +}: { + beforeIndex: number; + factMappings: SceSim__FactMappingType[]; + factMappingValues: SceSim__FactMappingValuesTypes[]; +}) { + /* Creating a new Scenario (Row) composed by a list of FactMappingValues. The list order is not relevant. */ + const factMappingValuesItems = factMappings.map((factMapping) => { + return { + expressionIdentifier: { + name: { __$$text: factMapping.expressionIdentifier.name!.__$$text }, + type: { __$$text: factMapping.expressionIdentifier.type!.__$$text }, + }, + factIdentifier: { + name: { __$$text: factMapping.factIdentifier.name!.__$$text }, + className: { __$$text: factMapping.factIdentifier.className!.__$$text }, + }, + rawValue: { __$$text: "", "@_class": "string" }, + }; + }); + + const newScenario = { + factMappingValues: { + FactMappingValue: factMappingValuesItems, + }, + }; + + factMappingValues.splice(beforeIndex, 0, newScenario); +} diff --git a/packages/scesim-editor/src/mutations/deleteColumn.ts b/packages/scesim-editor/src/mutations/deleteColumn.ts new file mode 100644 index 00000000000..07137ff667d --- /dev/null +++ b/packages/scesim-editor/src/mutations/deleteColumn.ts @@ -0,0 +1,87 @@ +/* + * 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 _, { isNumber } from "lodash"; +import { + SceSim__FactMappingType, + SceSim__FactMappingValuesTypes, +} from "@kie-tools/scesim-marshaller/dist/schemas/scesim-1_8/ts-gen/types"; + +export function deleteColumn({ + factMappingIndexToRemove, + factMappings, + factMappingValues, + isBackground, + isInstance, + selectedColumnIndex, +}: { + factMappingIndexToRemove: number; + factMappings: SceSim__FactMappingType[]; + factMappingValues: SceSim__FactMappingValuesTypes[]; + isBackground: boolean; + isInstance: boolean; + selectedColumnIndex: number; +}): { + deletedFactMappingIndexs: number[]; +} { + /* Retriving the FactMapping (Column) to be removed). If the user selected a single column, it finds the exact + FactMapping to delete. If the user selected an instance (group of columns), it retrives all the FactMappings + that belongs to the the instance group */ + const factMappingToRemove = factMappings[factMappingIndexToRemove]; + const groupType = factMappingToRemove.expressionIdentifier.type!.__$$text; + const instanceName = factMappingToRemove.factIdentifier.name!.__$$text; + const instanceType = factMappingToRemove.factIdentifier.className!.__$$text; + + const allFactMappingWithIndexesToRemove = isInstance + ? factMappings + .map((factMapping, index) => { + if ( + factMapping.expressionIdentifier.type!.__$$text === groupType && + factMapping.factIdentifier.name?.__$$text === instanceName && + factMapping.factIdentifier.className?.__$$text === instanceType + ) { + return { factMappingIndex: index, factMapping: factMapping }; + } else { + return {}; + } + }) + .filter((item) => isNumber(item.factMappingIndex)) + : [{ factMappingIndex: selectedColumnIndex + (isBackground ? 0 : 1), factMapping: factMappingToRemove }]; + + factMappings.splice(allFactMappingWithIndexesToRemove[0].factMappingIndex!, allFactMappingWithIndexesToRemove.length); + + factMappingValues.forEach((rowData) => { + allFactMappingWithIndexesToRemove.forEach((itemToRemove) => { + const factMappingValueColumnIndexToRemove = rowData.factMappingValues.FactMappingValue!.findIndex( + (factMappingValue) => + factMappingValue.factIdentifier.name?.__$$text === itemToRemove.factMapping!.factIdentifier.name?.__$$text && + factMappingValue.factIdentifier.className?.__$$text === + itemToRemove.factMapping!.factIdentifier.className?.__$$text && + factMappingValue.expressionIdentifier.name?.__$$text === + itemToRemove.factMapping!.expressionIdentifier.name?.__$$text && + factMappingValue.expressionIdentifier.type?.__$$text === + itemToRemove.factMapping!.expressionIdentifier.type?.__$$text + ); + + rowData.factMappingValues.FactMappingValue!.splice(factMappingValueColumnIndexToRemove, 1); + }); + }); + + return { deletedFactMappingIndexs: allFactMappingWithIndexesToRemove.flatMap((item) => item.factMappingIndex!) }; +} diff --git a/packages/runtime-tools-task-console-webapp/src/components/styles.css b/packages/scesim-editor/src/mutations/deleteRow.ts similarity index 68% rename from packages/runtime-tools-task-console-webapp/src/components/styles.css rename to packages/scesim-editor/src/mutations/deleteRow.ts index 4d205ff2d35..26f14903a7d 100644 --- a/packages/runtime-tools-task-console-webapp/src/components/styles.css +++ b/packages/scesim-editor/src/mutations/deleteRow.ts @@ -1,4 +1,4 @@ -/** +/* * 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 @@ -7,7 +7,7 @@ * "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 + * 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 @@ -16,10 +16,15 @@ * specific language governing permissions and limitations * under the License. */ -.kogito-task-console__full-size { - height: 100%; -} -.kogito-task-console__task-details-page { - margin-top: 21px; +import { SceSim__FactMappingValuesTypes } from "@kie-tools/scesim-marshaller/dist/schemas/scesim-1_8/ts-gen/types"; + +export function deleteRow({ + rowIndex, + factMappingValues, +}: { + rowIndex: number; + factMappingValues: SceSim__FactMappingValuesTypes[]; +}) { + factMappingValues.splice(rowIndex, 1); } diff --git a/packages/scesim-editor/src/mutations/duplicateRow.ts b/packages/scesim-editor/src/mutations/duplicateRow.ts new file mode 100644 index 00000000000..268da3f826f --- /dev/null +++ b/packages/scesim-editor/src/mutations/duplicateRow.ts @@ -0,0 +1,41 @@ +/* + * 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 { SceSim__FactMappingValuesTypes } from "@kie-tools/scesim-marshaller/dist/schemas/scesim-1_8/ts-gen/types"; + +export function dupliacteRow({ + rowIndex, + factMappingValues, +}: { + rowIndex: number; + factMappingValues: SceSim__FactMappingValuesTypes[]; +}) { + /* It simply clones a Scenario (Row) and adds it in a current-cloned Scenario list */ + const factMappingValuesItems = JSON.parse( + JSON.stringify(factMappingValues[rowIndex].factMappingValues.FactMappingValue) + ); + + const newScenario = { + factMappingValues: { + FactMappingValue: factMappingValuesItems, + }, + }; + + factMappingValues.splice(rowIndex, 0, newScenario); +} diff --git a/packages/scesim-editor/src/mutations/updateCell.ts b/packages/scesim-editor/src/mutations/updateCell.ts new file mode 100644 index 00000000000..3a984fb32c7 --- /dev/null +++ b/packages/scesim-editor/src/mutations/updateCell.ts @@ -0,0 +1,52 @@ +/* + * 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 { + SceSim__FactMappingType, + SceSim__FactMappingValuesTypes, +} from "@kie-tools/scesim-marshaller/dist/schemas/scesim-1_8/ts-gen/types"; + +export function updateCell({ + columnIndex, + factMappings, + factMappingValuesTypes, + rowIndex, + value, +}: { + columnIndex: number; + factMappings: SceSim__FactMappingType[]; + factMappingValuesTypes: SceSim__FactMappingValuesTypes[]; + rowIndex: number; + value: any; +}) { + /* To update the related FactMappingValue, it compares every FactMappingValue associated with the Scenario (Row) + that contains the cell with the FactMapping (Column) fields factIdentifier and expressionIdentifier */ + const factMapping = factMappings[columnIndex]; + const factMappingValues = factMappingValuesTypes[rowIndex].factMappingValues.FactMappingValue!; + + const factMappingValueToUpdateIndex = factMappingValues.findIndex( + (factMappingValue) => + factMappingValue.factIdentifier.name?.__$$text === factMapping!.factIdentifier.name?.__$$text && + factMappingValue.factIdentifier.className?.__$$text === factMapping!.factIdentifier.className?.__$$text && + factMappingValue.expressionIdentifier.name?.__$$text === factMapping!.expressionIdentifier.name?.__$$text && + factMappingValue.expressionIdentifier.type?.__$$text === factMapping!.expressionIdentifier.type?.__$$text + ); + const factMappingValueToUpdate = factMappingValues[factMappingValueToUpdateIndex]; + factMappingValueToUpdate.rawValue = { __$$text: value }; +} diff --git a/packages/scesim-editor/src/mutations/updateColumn.ts b/packages/scesim-editor/src/mutations/updateColumn.ts new file mode 100644 index 00000000000..081e78de4c4 --- /dev/null +++ b/packages/scesim-editor/src/mutations/updateColumn.ts @@ -0,0 +1,84 @@ +/* + * 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 _ from "lodash"; +import { + SceSim__FactMappingType, + SceSim__FactMappingValuesTypes, +} from "@kie-tools/scesim-marshaller/dist/schemas/scesim-1_8/ts-gen/types"; + +export function updateColumn({ + className, + expressionAlias, + expressionElementsSteps, + expressionIdentifierName, + expressionIdentifierType, + factMappings, + factMappingValuesTypes, + factMappingValueType, + factClassName, + factIdentifierClassName, + factIdentifierName, + factName, + selectedColumnIndex, +}: { + className: string; + expressionAlias: string; + expressionElementsSteps: string[]; + expressionIdentifierName: string | undefined; + expressionIdentifierType: string | undefined; + factMappings: SceSim__FactMappingType[]; + factMappingValuesTypes: SceSim__FactMappingValuesTypes[]; + factMappingValueType: "EXPRESSION" | "NOT_EXPRESSION"; + factClassName: string; + factIdentifierClassName: string | undefined; + factIdentifierName: string | undefined; + factName: string; + selectedColumnIndex: number; +}): { updatedFactMapping: SceSim__FactMappingType } { + const factMappingToUpdate = factMappings[selectedColumnIndex]; + factMappingToUpdate.className = { __$$text: className }; + factMappingToUpdate.factAlias = { __$$text: factName }; + factMappingToUpdate.factIdentifier.className = { __$$text: factClassName }; + factMappingToUpdate.factIdentifier.name = { __$$text: factName }; + factMappingToUpdate.factMappingValueType = { __$$text: factMappingValueType }; + factMappingToUpdate.expressionAlias = { __$$text: expressionAlias }; + factMappingToUpdate.expressionElements = { + ExpressionElement: expressionElementsSteps.map((ee) => { + return { step: { __$$text: ee } }; + }), + }; + + factMappingValuesTypes.forEach((fmv) => { + const factMappingValues = fmv.factMappingValues.FactMappingValue!; + const factMappingValueToUpdateIndex = factMappingValues.findIndex( + (factMappingValue) => + factMappingValue.factIdentifier.name?.__$$text === factIdentifierName && + factMappingValue.factIdentifier.className?.__$$text === factIdentifierClassName && + factMappingValue.expressionIdentifier.name?.__$$text === expressionIdentifierName && + factMappingValue.expressionIdentifier.type?.__$$text === expressionIdentifierType + ); + const factMappingValueToUpdate = factMappingValues[factMappingValueToUpdateIndex]; + factMappingValueToUpdate.factIdentifier.className = { __$$text: factClassName }; + factMappingValueToUpdate.factIdentifier.name = { __$$text: factName }; + //factMappingValueToUpdate.rawValue = { __$$text: update.value }, //TODO 2 related see kie-issues#1514 + }); + + return { updatedFactMapping: JSON.parse(JSON.stringify(factMappingToUpdate)) }; +} diff --git a/packages/runtime-tools-task-console-webapp/src/env/EnvJson.ts b/packages/scesim-editor/src/mutations/updateColumnWidth.ts similarity index 60% rename from packages/runtime-tools-task-console-webapp/src/env/EnvJson.ts rename to packages/scesim-editor/src/mutations/updateColumnWidth.ts index c87128556a1..8a59346ad03 100644 --- a/packages/runtime-tools-task-console-webapp/src/env/EnvJson.ts +++ b/packages/scesim-editor/src/mutations/updateColumnWidth.ts @@ -17,13 +17,22 @@ * under the License. */ -import { KogitoConsolesKeycloakEnv } from "@kie-tools/runtime-tools-components/dist/utils/KeycloakClient"; +import { SceSim__FactMappingType } from "@kie-tools/scesim-marshaller/dist/schemas/scesim-1_8/ts-gen/types"; -export interface EnvJson extends KogitoConsolesKeycloakEnv { - RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_ENV_MODE: "DEV" | "PROD"; - RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_APP_NAME: string; - RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_APP_VERSION: string; - RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_TASK_STATES_LIST: string; - RUNTIME_TOOLS_TASK_CONSOLE_KOGITO_TASK_ACTIVE_STATES_LIST: string; - RUNTIME_TOOLS_TASK_CONSOLE_DATA_INDEX_ENDPOINT: string; +export function updateColumnWidth({ + factMappings, + columnIndex, + newWidth, + oldWidth, +}: { + factMappings: SceSim__FactMappingType[]; + columnIndex: number; + newWidth: number | undefined; + oldWidth: number | undefined; +}) { + if (newWidth && oldWidth !== newWidth) { + factMappings[columnIndex].columnWidth = { + __$$text: newWidth, + }; + } } diff --git a/packages/scesim-editor/src/reactExt/ErrorBoundary.tsx b/packages/scesim-editor/src/reactExt/ErrorBoundary.tsx deleted file mode 100644 index e61f50af242..00000000000 --- a/packages/scesim-editor/src/reactExt/ErrorBoundary.tsx +++ /dev/null @@ -1,62 +0,0 @@ -/* - * 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 * as React from "react"; -import { ErrorInfo } from "react"; - -interface State { - hasError: boolean; -} - -interface Props { - children: React.ReactNode; - error: React.ReactNode; - setError?: React.Dispatch; -} - -export class ErrorBoundary extends React.Component { - constructor(props: any) { - super(props); - this.state = { hasError: false }; - } - - public reset() { - this.props.setError?.(null); - this.setState({ hasError: false }); - } - - public componentDidCatch(error: Error, errorInfo: ErrorInfo) { - this.props.setError?.(error); - console.error(error); - } - - public render() { - if (this.state.hasError) { - return this.props.error; - } - - return this.props.children; - } - - public static getDerivedStateFromError(error: Error) { - return { hasError: true }; - } -} - -export default ErrorBoundary; diff --git a/packages/scesim-editor/src/sidebar/TestScenarioSideBarMenu.tsx b/packages/scesim-editor/src/sidebar/TestScenarioSideBarMenu.tsx index df9671c6bb9..de41743c500 100644 --- a/packages/scesim-editor/src/sidebar/TestScenarioSideBarMenu.tsx +++ b/packages/scesim-editor/src/sidebar/TestScenarioSideBarMenu.tsx @@ -27,25 +27,32 @@ import CogIcon from "@patternfly/react-icons/dist/esm/icons/cog-icon"; import EditIcon from "@patternfly/react-icons/dist/esm/icons/edit-alt-icon"; import InfoIcon from "@patternfly/react-icons/dist/esm/icons/info-icon"; -import { TestScenarioEditorDock } from "../TestScenarioEditor"; import { useTestScenarioEditorI18n } from "../i18n"; +import { TestScenarioEditorDock } from "../store/TestScenarioEditorStore"; +import { useTestScenarioEditorStore, useTestScenarioEditorStoreApi } from "../store/TestScenarioStoreContext"; import "./TestScenarioSideBarMenu.css"; -function TestScenarioSideBarMenu({ - onSideBarButtonClicked, - selectedSideBarMenuItem, -}: { - onSideBarButtonClicked: (selected: TestScenarioEditorDock) => void; - selectedSideBarMenuItem: { isOpen: boolean; selected: TestScenarioEditorDock }; -}) { +function TestScenarioSideBarMenu() { const { i18n } = useTestScenarioEditorI18n(); + const navigation = useTestScenarioEditorStore((state) => state.navigation); + const testScenarioEditorStoreApi = useTestScenarioEditorStoreApi(); const isSelectedMenuItem = useCallback( (item: TestScenarioEditorDock) => { - return selectedSideBarMenuItem.isOpen && selectedSideBarMenuItem.selected === item; + return navigation.dock.isOpen && navigation.dock.selected === item; }, - [selectedSideBarMenuItem] + [navigation.dock] + ); + + const updateSelectedDock = useCallback( + (selected: TestScenarioEditorDock) => { + testScenarioEditorStoreApi.setState((state) => { + state.navigation.dock.isOpen = true; + state.navigation.dock.selected = selected; + }); + }, + [testScenarioEditorStoreApi] ); return ( @@ -58,7 +65,7 @@ function TestScenarioSideBarMenu({ : "kie-scesim-editor-side-bar-menu--button" } variant="plain" - onClick={() => onSideBarButtonClicked(TestScenarioEditorDock.DATA_OBJECT)} + onClick={() => updateSelectedDock(TestScenarioEditorDock.DATA_OBJECT)} icon={} /> @@ -70,7 +77,7 @@ function TestScenarioSideBarMenu({ : "kie-scesim-editor-side-bar-menu--button" } icon={} - onClick={() => onSideBarButtonClicked(TestScenarioEditorDock.CHEATSHEET)} + onClick={() => updateSelectedDock(TestScenarioEditorDock.CHEATSHEET)} variant="plain" />
@@ -82,7 +89,7 @@ function TestScenarioSideBarMenu({ : "kie-scesim-editor-side-bar-menu--button" } icon={} - onClick={() => onSideBarButtonClicked(TestScenarioEditorDock.SETTINGS)} + onClick={() => updateSelectedDock(TestScenarioEditorDock.SETTINGS)} variant="plain" /> diff --git a/packages/scesim-editor/src/store/ComputedStateCache.ts b/packages/scesim-editor/src/store/ComputedStateCache.ts new file mode 100644 index 00000000000..400595c931b --- /dev/null +++ b/packages/scesim-editor/src/store/ComputedStateCache.ts @@ -0,0 +1,96 @@ +/* + * 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 type TypeOrReturnType = T extends (...args: any[]) => any ? ReturnType : T; + +export type CacheEntry = { + value: TypeOrReturnType | undefined; + dependencies: readonly any[]; +}; + +export type Cache = { + [K in keyof T]: CacheEntry; +}; + +let r: number = 0; + +export class ComputedStateCache> { + private readonly cache: Cache; + + constructor(initialValues: Cache) { + this.cache = { ...initialValues }; + } + + public cached( + key: K, + delegate: (...dependencies: D) => TypeOrReturnType, + dependencies: D + ): TypeOrReturnType { + r++; + + const cachedDeps = this.cache[key]?.dependencies ?? []; + + let depsAreEqual = cachedDeps.length === dependencies.length; + if (depsAreEqual) { + for (let i = 0; i < cachedDeps.length; i++) { + if (!Object.is(cachedDeps[i], dependencies[i])) { + depsAreEqual = false; + } + } + } + + if (depsAreEqual) { + return this.cache[key].value!; + } + + const v = delegate(...dependencies); + this.cache[key].dependencies = dependencies; + this.cache[key].value = v; + return v; + } + + public cachedData( + key: K, + delegate: (...data: Y) => TypeOrReturnType, + data: Y, + dependencies: D + ): TypeOrReturnType { + r++; + + const cachedDeps = this.cache[key]?.dependencies ?? []; + + let depsAreEqual = cachedDeps.length === dependencies.length; + if (depsAreEqual) { + for (let i = 0; i < cachedDeps.length; i++) { + if (!Object.is(cachedDeps[i], dependencies[i])) { + depsAreEqual = false; + } + } + } + + if (depsAreEqual) { + return this.cache[key].value!; + } + + const v = delegate(...data); + this.cache[key].dependencies = dependencies; + this.cache[key].value = v; + return v; + } +} diff --git a/packages/scesim-editor/src/store/TestScenarioEditorStore.ts b/packages/scesim-editor/src/store/TestScenarioEditorStore.ts new file mode 100644 index 00000000000..7be9d3f10ec --- /dev/null +++ b/packages/scesim-editor/src/store/TestScenarioEditorStore.ts @@ -0,0 +1,164 @@ +/* + * 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 { SceSimModel } from "@kie-tools/scesim-marshaller"; +import { enableMapSet } from "immer"; +import { create } from "zustand"; +import { immer } from "zustand/middleware/immer"; + +import { SceSim__FactMappingType } from "@kie-tools/scesim-marshaller/dist/schemas/scesim-1_8/ts-gen/types"; + +import { ComputedStateCache } from "./ComputedStateCache"; +import { computeTestScenarioDataObjects } from "./computed/computeTestScenarioDataObjects"; + +enableMapSet(); // Necessary because `Computed` has a lot of Maps and Sets. + +export enum TestScenarioEditorDock { + CHEATSHEET, + DATA_OBJECT, + SETTINGS, +} + +export enum TestScenarioEditorTab { + BACKGROUND, + SIMULATION, +} + +export type TestScenarioAlert = { + enabled: boolean; + message?: string; + variant: "success" | "danger" | "warning" | "info" | "default"; +}; + +export type TestScenarioDataObject = { + id: string; + children?: TestScenarioDataObject[]; + customBadgeContent?: string; + isSimpleTypeFact?: boolean; + name: string; +}; + +export type TestScenarioSelectedColumnMetaData = { + factMapping: SceSim__FactMappingType; + index: number; + isBackground: boolean; +}; + +export interface State { + computed: (s: State) => Computed; + dispatch: (s: State) => Dispatch; + navigation: { + dock: { + isOpen: boolean; + selected: TestScenarioEditorDock; + }; + tab: TestScenarioEditorTab; + }; + scesim: { model: SceSimModel }; + table: { + background: { + selectedColumn: TestScenarioSelectedColumnMetaData | null; + }; + simulation: { + selectedColumn: TestScenarioSelectedColumnMetaData | null; + }; + }; +} + +// Read this to understand why we need computed as part of the store. +// https://github.com/pmndrs/zustand/issues/132#issuecomment-1120467721 +export type Computed = { + getTestScenarioDataObjects(): TestScenarioDataObject[]; +}; + +export type Dispatch = { + scesim: { + reset: () => void; + }; + table: { + updateSelectedColumn: (columnMetadata: TestScenarioSelectedColumnMetaData | null) => void; + }; +}; + +export const defaultStaticState = (): Omit => ({ + navigation: { + dock: { + isOpen: true, + selected: TestScenarioEditorDock.DATA_OBJECT, + }, + tab: TestScenarioEditorTab.SIMULATION, + }, + table: { + background: { + selectedColumn: null, + }, + simulation: { + selectedColumn: null, + }, + }, +}); + +export function createTestScenarioEditorStore(model: SceSimModel, computedCache: ComputedStateCache) { + console.trace("[TestScenarioEditorStore] Creating store with above model and empty cache "); + console.trace(model); + + const { ...defaultState } = defaultStaticState(); + return create( + immer(() => ({ + ...defaultState, + scesim: { + model: model, + }, + dispatch(state: State) { + return { + scesim: { + reset: () => { + state.navigation.tab = TestScenarioEditorTab.SIMULATION; + state.navigation.dock.isOpen = true; + state.navigation.dock.selected = TestScenarioEditorDock.DATA_OBJECT; + state.table.background.selectedColumn = null; + state.table.simulation.selectedColumn = null; + }, + }, + table: { + updateSelectedColumn: (columnMetadata: TestScenarioSelectedColumnMetaData) => { + if (state.navigation.tab === TestScenarioEditorTab.BACKGROUND) { + state.table.background.selectedColumn = columnMetadata; + } else { + state.table.simulation.selectedColumn = columnMetadata; + } + }, + }, + }; + }, + computed(state: State) { + return { + getTestScenarioDataObjects: () => { + return computedCache.cachedData( + "getTestScenarioDataObjects", + computeTestScenarioDataObjects, + [state.scesim.model.ScenarioSimulationModel.simulation.scesimModelDescriptor.factMappings.FactMapping], + [state.scesim.model.ScenarioSimulationModel.settings.type] + ); + }, + }; + }, + })) + ); +} diff --git a/packages/scesim-editor/src/store/TestScenarioStoreContext.ts b/packages/scesim-editor/src/store/TestScenarioStoreContext.ts new file mode 100644 index 00000000000..f910fc424dc --- /dev/null +++ b/packages/scesim-editor/src/store/TestScenarioStoreContext.ts @@ -0,0 +1,47 @@ +/* + * 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 { createContext, useContext } from "react"; +import { StoreApi, UseBoundStore } from "zustand"; +import { WithImmer } from "zustand/middleware/immer"; +import { useStoreWithEqualityFn } from "zustand/traditional"; +import { State } from "./TestScenarioEditorStore"; + +type ExtractState = StoreApi extends { getState: () => infer T } ? T : never; + +export type StoreApiType = UseBoundStore>>; + +export const TestScenarioEditorStoreApiContext = createContext({} as any); + +export function useTestScenarioEditorStore( + selector: (state: State) => StateSlice, + equalityFn?: (a: StateSlice, b: StateSlice) => boolean +) { + const store = useContext(TestScenarioEditorStoreApiContext); + + if (store === null) { + throw new Error("Can't use Test Scenario Editor Store outside of the TestScenarioEditor component."); + } + + return useStoreWithEqualityFn(store, selector, equalityFn); +} + +export function useTestScenarioEditorStoreApi() { + return useContext(TestScenarioEditorStoreApiContext); +} diff --git a/packages/scesim-editor/src/store/computed/computeTestScenarioDataObjects.ts b/packages/scesim-editor/src/store/computed/computeTestScenarioDataObjects.ts new file mode 100644 index 00000000000..228f4b1fbe8 --- /dev/null +++ b/packages/scesim-editor/src/store/computed/computeTestScenarioDataObjects.ts @@ -0,0 +1,80 @@ +/* + * 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 { Computed, State, TestScenarioDataObject } from "../TestScenarioEditorStore"; + +export function computeTestScenarioDataObjects( + factMappings: State["scesim"]["model"]["ScenarioSimulationModel"]["simulation"]["scesimModelDescriptor"]["factMappings"]["FactMapping"] +) { + /* To create the Data Object arrays we need an external source, in details: */ + /* DMN Data: Retrieving DMN type from linked DMN file */ + /* Java classes: Retrieving Java classes info from the user projects */ + /* At this time, none of the above are supported */ + /* Therefore, it tries to retrieve these info from the SCESIM file, if are present */ + + /* Retriving Data Object from the scesim file. + That makes sense for previously created scesim files */ + + const factsMappings = factMappings ?? []; + const dataObjects: TestScenarioDataObject[] = []; + + /* The first two FactMapping are related to the "Number" and "Description" columns. + If those columns only are present, no Data Objects can be detected in the scesim file */ + for (let i = 2; i < factsMappings.length; i++) { + if (factsMappings[i].className!.__$$text === "java.lang.Void") { + continue; + } + const factID = factsMappings[i].expressionElements!.ExpressionElement![0].step.__$$text; + const dataObject = dataObjects.find((value) => value.id === factID); + const isSimpleTypeFact = factsMappings[i].expressionElements!.ExpressionElement!.length === 1; + const propertyID = isSimpleTypeFact //POTENTIAL BUG + ? factsMappings[i].expressionElements!.ExpressionElement![0].step.__$$text.concat(".") + : factsMappings[i] + .expressionElements!.ExpressionElement!.map((expressionElement) => expressionElement.step.__$$text) + .join("."); + const propertyName = isSimpleTypeFact + ? "value" + : factsMappings[i].expressionElements!.ExpressionElement!.slice(-1)[0].step.__$$text; + if (dataObject) { + if (!dataObject.children?.some((value) => value.id === propertyID)) { + dataObject.children!.push({ + id: propertyID, + customBadgeContent: factsMappings[i].className.__$$text, + isSimpleTypeFact: isSimpleTypeFact, + name: propertyName, + }); + } + } else { + dataObjects.push({ + id: factID, + name: factsMappings[i].factAlias!.__$$text, + customBadgeContent: factsMappings[i].factIdentifier!.className!.__$$text, + children: [ + { + id: propertyID, + name: propertyName, + customBadgeContent: factsMappings[i].className.__$$text, + }, + ], + }); + } + } + + return dataObjects; +} diff --git a/packages/scesim-editor/src/common/TestScenarioCommonConstants.ts b/packages/scesim-editor/src/store/computed/initial.ts similarity index 76% rename from packages/scesim-editor/src/common/TestScenarioCommonConstants.ts rename to packages/scesim-editor/src/store/computed/initial.ts index 55edecff712..ce228895c2a 100644 --- a/packages/scesim-editor/src/common/TestScenarioCommonConstants.ts +++ b/packages/scesim-editor/src/store/computed/initial.ts @@ -17,9 +17,12 @@ * under the License. */ -export const EMPTY_TYPE = "java.lang.Void"; +import { Cache } from "../ComputedStateCache"; +import { Computed } from "../TestScenarioEditorStore"; -export enum TEST_SCENARIO_EXPRESSION_TYPE { - EXPRESSION, - NOT_EXPRESSION, -} +export const INITIAL_COMPUTED_CACHE: Cache = { + getTestScenarioDataObjects: { + value: undefined, + dependencies: [], + }, +}; diff --git a/packages/scesim-editor/src/table/TestScenarioTable.tsx b/packages/scesim-editor/src/table/TestScenarioTable.tsx index 32ec8ae704d..14a83ff5289 100644 --- a/packages/scesim-editor/src/table/TestScenarioTable.tsx +++ b/packages/scesim-editor/src/table/TestScenarioTable.tsx @@ -21,17 +21,7 @@ import * as React from "react"; import { useCallback, useMemo } from "react"; import * as ReactTable from "react-table"; -import _, { isNumber } from "lodash"; -import { v4 as uuid } from "uuid"; - -import { - SceSim__backgroundDatasType, - SceSim__backgroundType, - SceSim__FactMappingType, - SceSim__FactMappingValuesTypes, - SceSim__scenariosType, - SceSim__simulationType, -} from "@kie-tools/scesim-marshaller/dist/schemas/scesim-1_8/ts-gen/types"; +import _ from "lodash"; import { BeeTableContextMenuAllowedOperationsConditions, @@ -47,30 +37,32 @@ import { getColumnsAtLastLevel, } from "@kie-tools/boxed-expression-component/dist/table/BeeTable"; -import { SceSimModel } from "@kie-tools/scesim-marshaller"; +import { + SceSim__backgroundDatasType, + SceSim__backgroundType, + SceSim__FactMappingType, + SceSim__scenariosType, + SceSim__simulationType, +} from "@kie-tools/scesim-marshaller/dist/schemas/scesim-1_8/ts-gen/types"; import { useTestScenarioEditorI18n } from "../i18n"; -import { TestScenarioSelectedColumnMetaData, TestScenarioType } from "../TestScenarioEditor"; +import { useTestScenarioEditorStore, useTestScenarioEditorStoreApi } from "../store/TestScenarioStoreContext"; +import { addColumn } from "../mutations/addColumn"; +import { deleteColumn } from "../mutations/deleteColumn"; import "./TestScenarioTable.css"; -import { - retrieveFactMappingValueIndexByIdentifiers, - retrieveModelDescriptor, - retrieveRowsDataFromModel, -} from "../common/TestScenarioCommonFunctions"; +import { addRow } from "../mutations/addRow"; +import { deleteRow } from "../mutations/deleteRow"; +import { dupliacteRow } from "../mutations/duplicateRow"; +import { updateCell } from "../mutations/updateCell"; +import { updateColumnWidth } from "../mutations/updateColumnWidth"; function TestScenarioTable({ - assetType, tableData, scrollableParentRef, - updateSelectedColumnMetaData, - updateTestScenarioModel, }: { - assetType: string; tableData: SceSim__simulationType | SceSim__backgroundType; scrollableParentRef: React.RefObject; - updateSelectedColumnMetaData: React.Dispatch>; - updateTestScenarioModel: React.Dispatch>; }) { enum TestScenarioTableColumnHeaderGroup { EXPECT = "expect-header", @@ -89,6 +81,9 @@ function TestScenarioTable({ type ROWTYPE = any; // FIXME: https://github.com/apache/incubator-kie-issues/issues/169 const { i18n } = useTestScenarioEditorI18n(); + const testScenarioEditorStoreApi = useTestScenarioEditorStoreApi(); + const settingsModel = useTestScenarioEditorStore((state) => state.scesim.model.ScenarioSimulationModel.settings); + const testScenarioType = settingsModel.type?.__$$text.toUpperCase(); /** BACKGROUND TABLE MANAGMENT */ @@ -119,71 +114,33 @@ function TestScenarioTable({ const determineDataTypeLabel = useCallback( (dataType: string) => { let dataTypeLabel = dataType; - if (assetType === TestScenarioType[TestScenarioType.RULE]) { + if (testScenarioType === "RULE") { dataTypeLabel = dataTypeLabel.split(".").pop() ?? dataTypeLabel; } return dataTypeLabel.endsWith("Void") ? "" : dataTypeLabel; }, - [assetType] + [testScenarioType] ); /* It updates any column width change in the Model */ const setColumnWidth = useCallback( (inputIndex: number) => (newWidthAction: React.SetStateAction) => { - updateTestScenarioModel((prevState) => { - const oldWidth = retrieveModelDescriptor(prevState.ScenarioSimulationModel, isBackground).factMappings - .FactMapping![inputIndex].columnWidth?.__$$text; + testScenarioEditorStoreApi.setState((state) => { + const factMappings = isBackground + ? state.scesim.model.ScenarioSimulationModel.background.scesimModelDescriptor.factMappings.FactMapping! + : state.scesim.model.ScenarioSimulationModel.simulation.scesimModelDescriptor.factMappings.FactMapping!; + const oldWidth = factMappings[inputIndex].columnWidth?.__$$text; const newWidth = typeof newWidthAction === "function" ? newWidthAction(oldWidth) : newWidthAction; - let model = prevState; - if (newWidth && oldWidth !== newWidth) { - /* Cloning the FactMapping list and updating the new width */ - const deepClonedFactMappings: SceSim__FactMappingType[] = JSON.parse( - JSON.stringify( - retrieveModelDescriptor(prevState.ScenarioSimulationModel, isBackground).factMappings.FactMapping - ) - ); - const factMappingToUpdate = deepClonedFactMappings[inputIndex]; - - if (factMappingToUpdate.columnWidth?.__$$text) { - factMappingToUpdate.columnWidth.__$$text = newWidth; - } else { - factMappingToUpdate.columnWidth = { - __$$text: newWidth, - }; - } - - model = { - ScenarioSimulationModel: { - ...prevState.ScenarioSimulationModel, - simulation: { - ...prevState.ScenarioSimulationModel.simulation, - scesimModelDescriptor: { - factMappings: { - FactMapping: isBackground - ? prevState.ScenarioSimulationModel.simulation.scesimModelDescriptor.factMappings.FactMapping - : deepClonedFactMappings, - }, - }, - }, - background: { - ...prevState.ScenarioSimulationModel.background, - scesimModelDescriptor: { - factMappings: { - FactMapping: isBackground - ? deepClonedFactMappings - : prevState.ScenarioSimulationModel.background.scesimModelDescriptor.factMappings.FactMapping, - }, - }, - }, - }, - }; - } - - return model; + updateColumnWidth({ + factMappings: factMappings, + columnIndex: inputIndex, + newWidth: newWidth, + oldWidth: oldWidth, + }); }); }, - [isBackground, updateTestScenarioModel] + [isBackground, testScenarioEditorStoreApi] ); /* It determines the column data based on the given FactMapping (Scesim column representation). @@ -244,7 +201,7 @@ function TestScenarioTable({ | | +--------------------------------+-----+----------------------------------+-----+ | # | | givenInstance (given-instance) | ... | expectGroup (expect-instance) | ... | | | +----------------+---------------+-----+----------------------------------+-----+ - | | | field (given) | field (given)| ... | field (expect) | field (expect)| ... | + | | | field (given) | field (given) | ... | field (expect) | field (expect)| ... | +---+---------------+----------------+---------------+-----+-----------------+----------------+-----+ Every section has its related groupType in the rounded brackets, that are crucial to determine the correct context menu behavior (adding/removing an instance requires a different logic than @@ -507,140 +464,25 @@ function TestScenarioTable({ const onCellUpdates = useCallback( (cellUpdates: BeeTableCellUpdate[]) => { cellUpdates.forEach((update) => { - updateTestScenarioModel((prevState) => { - /* To update the related FactMappingValue, it compares every FactMappingValue associated with the Scenario (Row) - that contains the cell with the FactMapping (Column) fields factIdentifier and expressionIdentifier */ - const factMapping = retrieveModelDescriptor(prevState.ScenarioSimulationModel, isBackground).factMappings - .FactMapping![update.columnIndex + columnIndexStart]; - - const deepClonedRowsData: SceSim__FactMappingValuesTypes[] = JSON.parse( - JSON.stringify(retrieveRowsDataFromModel(prevState.ScenarioSimulationModel, isBackground)) - ); - const factMappingValues = deepClonedRowsData[update.rowIndex].factMappingValues.FactMappingValue!; - const newFactMappingValues = [...factMappingValues]; - - const factMappingValueToUpdateIndex = retrieveFactMappingValueIndexByIdentifiers( - newFactMappingValues, - factMapping.factIdentifier, - factMapping.expressionIdentifier - ); - const factMappingValueToUpdate = factMappingValues[factMappingValueToUpdateIndex]; - - if (factMappingValueToUpdate.rawValue) { - factMappingValueToUpdate.rawValue!.__$$text = update.value; - } else { - newFactMappingValues[factMappingValueToUpdateIndex] = { - ...factMappingValueToUpdate, - rawValue: { - __$$text: update.value, - }, - }; - } - - deepClonedRowsData[update.rowIndex].factMappingValues.FactMappingValue = newFactMappingValues; - - return { - ScenarioSimulationModel: { - ...prevState.ScenarioSimulationModel, - simulation: { - ...prevState.ScenarioSimulationModel.simulation, - scesimData: { - Scenario: isBackground - ? prevState.ScenarioSimulationModel.simulation.scesimData.Scenario - : deepClonedRowsData, - }, - }, - background: { - ...prevState.ScenarioSimulationModel.background, - scesimData: { - BackgroundData: isBackground - ? deepClonedRowsData - : prevState.ScenarioSimulationModel.background.scesimData.BackgroundData, - }, - }, - }, - }; + testScenarioEditorStoreApi.setState((state) => { + const factMappings = isBackground + ? state.scesim.model.ScenarioSimulationModel.background.scesimModelDescriptor.factMappings.FactMapping! + : state.scesim.model.ScenarioSimulationModel.simulation.scesimModelDescriptor.factMappings.FactMapping!; + const factMappingValuesTypes = isBackground + ? state.scesim.model.ScenarioSimulationModel.background.scesimData.BackgroundData! + : state.scesim.model.ScenarioSimulationModel.simulation.scesimData.Scenario!; + + updateCell({ + columnIndex: update.columnIndex + columnIndexStart, + factMappings: factMappings, + factMappingValuesTypes: factMappingValuesTypes, + rowIndex: update.rowIndex, + value: update.value, + }); }); }); }, - [columnIndexStart, isBackground, updateTestScenarioModel] - ); - - const getNextAvailablePrefixedName = useCallback( - (names: string[], namePrefix: string, lastIndex: number = names.length): string => { - const candidate = `${namePrefix}-${lastIndex + 1}`; - const elemWithCandidateName = names.indexOf(candidate); - return elemWithCandidateName >= 0 ? getNextAvailablePrefixedName(names, namePrefix, lastIndex + 1) : candidate; - }, - [] - ); - - /* It determines in which index position a column should be added. In case of a field, the new column index - is simply in the right or in the left of the selected column. In case of a new instance, it's required to - find the first column index outside the selected Instance group. */ - const determineNewColumnTargetIndex = useCallback( - ( - factMappings: SceSim__FactMappingType[], - insertDirection: InsertRowColumnsDirection, - selectedColumnIndex: number, - selectedColumnGroupType: string, - selectedFactMapping: SceSim__FactMappingType - ) => { - const groupType = selectedFactMapping.expressionIdentifier.type!.__$$text; - const instanceName = selectedFactMapping.factIdentifier.name!.__$$text; - const instanceType = selectedFactMapping.factIdentifier.className!.__$$text; - - if ( - selectedColumnGroupType === TestScenarioTableColumnFieldGroup.EXPECT || - selectedColumnGroupType === TestScenarioTableColumnFieldGroup.GIVEN - ) { - if (insertDirection === InsertRowColumnsDirection.AboveOrRight) { - return selectedColumnIndex + 1; - } else { - return selectedColumnIndex; - } - } - - let newColumnTargetColumn = -1; - - if (insertDirection === InsertRowColumnsDirection.AboveOrRight) { - for (let i = selectedColumnIndex; i < factMappings.length; i++) { - const currentFM = factMappings[i]; - if ( - currentFM.expressionIdentifier.type!.__$$text === groupType && - currentFM.factIdentifier.name?.__$$text === instanceName && - currentFM.factIdentifier.className?.__$$text === instanceType - ) { - if (i == factMappings.length - 1) { - newColumnTargetColumn = i + 1; - } - } else { - newColumnTargetColumn = i; - break; - } - } - } else { - for (let i = selectedColumnIndex; i >= 0; i--) { - const currentFM = factMappings[i]; - - if ( - currentFM.expressionIdentifier.type!.__$$text === groupType && - currentFM.factIdentifier.name?.__$$text === instanceName && - currentFM.factIdentifier.className?.__$$text === instanceType - ) { - if (i == 0) { - newColumnTargetColumn = 0; - } - } else { - newColumnTargetColumn = i + 1; - break; - } - } - } - - return newColumnTargetColumn; - }, - [TestScenarioTableColumnFieldGroup] + [columnIndexStart, isBackground, testScenarioEditorStoreApi] ); /** @@ -687,143 +529,48 @@ function TestScenarioTable({ columnsCount: number; insertDirection: InsertRowColumnsDirection; }) => { - /* GIVEN and EXPECTED column types can be added only */ - if (TestScenarioTableColumnFieldGroup.OTHER === args.groupType) { + /* GIVEN and EXPECTED of FIELD and INSTANCE column types can be added only */ + if ( + TestScenarioTableColumnFieldGroup.OTHER === args.groupType || + TestScenarioTableColumnHeaderGroup.EXPECT === args.groupType || + TestScenarioTableColumnHeaderGroup.GIVEN === args.groupType + ) { + console.error("Can't add a " + args.groupType + " type column."); return; } const isInstance = args.groupType === TestScenarioTableColumnInstanceGroup.EXPECT || args.groupType === TestScenarioTableColumnInstanceGroup.GIVEN; - updateTestScenarioModel((prevState) => { - const factMappingList = retrieveModelDescriptor(prevState.ScenarioSimulationModel, isBackground).factMappings - .FactMapping!; - const selectedColumnIndex = determineSelectedColumnIndex(factMappingList, args.currentIndex, isInstance); - - /* Creating the new FactMapping based on the original selected column's FactMapping */ - const selectedColumnFactMapping = factMappingList[selectedColumnIndex]; - const targetColumnIndex = determineNewColumnTargetIndex( - factMappingList, - args.insertDirection, - selectedColumnIndex, - args.groupType, - selectedColumnFactMapping - ); - - const instanceDefaultNames = factMappingList - .filter((factMapping) => factMapping.factAlias!.__$$text.startsWith("INSTANCE-")) - .map((factMapping) => factMapping.factAlias!.__$$text); - - const isNewInstance = - isInstance || selectedColumnFactMapping.factIdentifier.className?.__$$text === "java.lang.Void"; - - const newFactMapping = { - className: { __$$text: "java.lang.Void" }, - columnWidth: { __$$text: 150 }, - expressionAlias: { __$$text: "PROPERTY" }, - expressionElements: isNewInstance - ? undefined - : { - ExpressionElement: [ - { - step: { - __$$text: selectedColumnFactMapping.expressionElements!.ExpressionElement![0].step.__$$text, - }, - }, - ], - }, - expressionIdentifier: { - name: { __$$text: `_${uuid()}`.toLocaleUpperCase() }, - type: { __$$text: selectedColumnFactMapping.expressionIdentifier.type!.__$$text }, - }, - factAlias: { - __$$text: isNewInstance - ? getNextAvailablePrefixedName(instanceDefaultNames, "INSTANCE") - : selectedColumnFactMapping.factAlias.__$$text, - }, - factIdentifier: { - name: { - __$$text: isNewInstance - ? getNextAvailablePrefixedName(instanceDefaultNames, "INSTANCE") - : selectedColumnFactMapping.factIdentifier.name!.__$$text, - }, - className: { - __$$text: isNewInstance ? "java.lang.Void" : selectedColumnFactMapping.factIdentifier.className!.__$$text, - }, - }, - factMappingValueType: { __$$text: "NOT_EXPRESSION" }, - }; - - /* Cloning the FactMapping list and putting the new one in the user defined index */ - const deepClonedFactMappings = JSON.parse( - JSON.stringify( - retrieveModelDescriptor(prevState.ScenarioSimulationModel, isBackground).factMappings.FactMapping - ) + testScenarioEditorStoreApi.setState((state) => { + const factMappings = isBackground + ? state.scesim.model.ScenarioSimulationModel.background.scesimModelDescriptor.factMappings.FactMapping! + : state.scesim.model.ScenarioSimulationModel.simulation.scesimModelDescriptor.factMappings.FactMapping!; + const factMappingValues = isBackground + ? state.scesim.model.ScenarioSimulationModel.background.scesimData.BackgroundData! + : state.scesim.model.ScenarioSimulationModel.simulation.scesimData.Scenario!; + const selectedColumnFactMappingIndex = determineSelectedColumnIndex( + factMappings, + args.currentIndex, + isInstance ); - deepClonedFactMappings.splice(targetColumnIndex, 0, newFactMapping); - /* Creating and adding a new FactMappingValue (cell) in every row, as a consequence of the new FactMapping (column) - we're going to introduce. The FactMappingValue will be linked with its related FactMapping via expressionIdentifier - and factIdentier data. That means, the column index of new FactMappingValue could be different in other Scenario (rows) */ - const deepClonedRowsData: SceSim__FactMappingValuesTypes[] = JSON.parse( - JSON.stringify(retrieveRowsDataFromModel(prevState.ScenarioSimulationModel, isBackground)) - ); - deepClonedRowsData.forEach((scenario) => { - scenario.factMappingValues.FactMappingValue!.splice(args.beforeIndex + 1, 0, { - expressionIdentifier: { - name: { __$$text: newFactMapping.expressionIdentifier.name.__$$text }, - type: { __$$text: newFactMapping.expressionIdentifier.type.__$$text }, - }, - factIdentifier: { - name: { __$$text: newFactMapping.factIdentifier.name.__$$text }, - className: { __$$text: newFactMapping.factIdentifier.className.__$$text }, - }, - rawValue: { __$$text: "", "@_class": "string" }, - }); + addColumn({ + beforeIndex: args.beforeIndex, + factMappings: factMappings, + factMappingValues: factMappingValues, + isInstance: isInstance, + insertDirection: args.insertDirection, + selectedColumnFactMappingIndex: selectedColumnFactMappingIndex, }); - - return { - ScenarioSimulationModel: { - ...prevState.ScenarioSimulationModel, - simulation: { - scesimModelDescriptor: { - factMappings: { - FactMapping: isBackground - ? prevState.ScenarioSimulationModel.simulation.scesimModelDescriptor.factMappings.FactMapping - : deepClonedFactMappings, - }, - }, - scesimData: { - Scenario: isBackground - ? prevState.ScenarioSimulationModel.simulation.scesimData.Scenario - : deepClonedRowsData, - }, - }, - background: { - scesimModelDescriptor: { - factMappings: { - FactMapping: isBackground - ? deepClonedFactMappings - : prevState.ScenarioSimulationModel.background.scesimModelDescriptor.factMappings.FactMapping, - }, - }, - scesimData: { - BackgroundData: isBackground - ? deepClonedRowsData - : prevState.ScenarioSimulationModel.background.scesimData.BackgroundData, - }, - }, - }, - }; }); }, [ - determineNewColumnTargetIndex, determineSelectedColumnIndex, - getNextAvailablePrefixedName, isBackground, - updateTestScenarioModel, + testScenarioEditorStoreApi, TestScenarioTableColumnFieldGroup, + TestScenarioTableColumnHeaderGroup, TestScenarioTableColumnInstanceGroup, ] ); @@ -833,127 +580,54 @@ function TestScenarioTable({ */ const onColumnDeleted = useCallback( (args: { columnIndex: number; groupType: string }) => { - updateTestScenarioModel((prevState) => { - const isInstance = - args.groupType === TestScenarioTableColumnInstanceGroup.EXPECT || - args.groupType === TestScenarioTableColumnInstanceGroup.GIVEN; - - const factMappings = retrieveModelDescriptor(prevState.ScenarioSimulationModel, isBackground).factMappings - .FactMapping!; - const columnIndexToRemove = determineSelectedColumnIndex(factMappings, args.columnIndex + 1, isInstance); - - /* Retriving the FactMapping (Column) to be removed). If the user selected a single column, it finds the exact - FactMapping to delete. If the user selected an instance (group of columns), it retrives all the FactMappings - that belongs to the the instance group */ - const factMappingToRemove = factMappings[columnIndexToRemove]; - const groupType = factMappingToRemove.expressionIdentifier.type!.__$$text; - const instanceName = factMappingToRemove.factIdentifier.name!.__$$text; - const instanceType = factMappingToRemove.factIdentifier.className!.__$$text; - - const allFactMappingWithIndexesToRemove = isInstance - ? factMappings - .map((factMapping, index) => { - if ( - factMapping.expressionIdentifier.type!.__$$text === groupType && - factMapping.factIdentifier.name?.__$$text === instanceName && - factMapping.factIdentifier.className?.__$$text === instanceType - ) { - return { factMappingIndex: index, factMapping: factMapping }; - } else { - return {}; - } - }) - .filter((item) => isNumber(item.factMappingIndex)) - : [{ factMappingIndex: args.columnIndex + columnIndexStart, factMapping: factMappingToRemove }]; - - /* Cloning the FactMappings list (Columns) and and removing the FactMapping (Column) at given index */ - const deepClonedFactMappings = JSON.parse( - JSON.stringify( - retrieveModelDescriptor(prevState.ScenarioSimulationModel, isBackground).factMappings.FactMapping - ) - ); - deepClonedFactMappings.splice( - allFactMappingWithIndexesToRemove[0].factMappingIndex, - allFactMappingWithIndexesToRemove.length - ); - - /* Cloning the Scenario List (Rows) and finding the Cell(s) to remove accordingly to the factMapping data of - the removed columns */ - const deepClonedRowsData: SceSim__FactMappingValuesTypes[] = JSON.parse( - JSON.stringify(retrieveRowsDataFromModel(prevState.ScenarioSimulationModel, isBackground) ?? []) - ); - deepClonedRowsData.forEach((rowData) => { - allFactMappingWithIndexesToRemove.forEach((itemToRemove) => { - const factMappingValueColumnIndexToRemove = retrieveFactMappingValueIndexByIdentifiers( - rowData.factMappingValues.FactMappingValue!, - itemToRemove.factMapping!.factIdentifier, - itemToRemove.factMapping!.expressionIdentifier - )!; - - return { - factMappingValues: { - FactMappingValue: rowData.factMappingValues.FactMappingValue!.splice( - factMappingValueColumnIndexToRemove, - 1 - ), - }, - }; - }); + /* GIVEN and EXPECTED of FIELD and INSTANCE column types can be deleted only */ + if ( + TestScenarioTableColumnFieldGroup.OTHER === args.groupType || + TestScenarioTableColumnHeaderGroup.EXPECT === args.groupType || + TestScenarioTableColumnHeaderGroup.GIVEN === args.groupType + ) { + console.error("Can't delete a " + args.groupType + " type column."); + return; + } + const isInstance = + args.groupType === TestScenarioTableColumnInstanceGroup.EXPECT || + args.groupType === TestScenarioTableColumnInstanceGroup.GIVEN; + testScenarioEditorStoreApi.setState((state) => { + const factMappings = isBackground + ? state.scesim.model.ScenarioSimulationModel.background.scesimModelDescriptor.factMappings.FactMapping! + : state.scesim.model.ScenarioSimulationModel.simulation.scesimModelDescriptor.factMappings.FactMapping!; + const factMappingValues = isBackground + ? state.scesim.model.ScenarioSimulationModel.background.scesimData.BackgroundData! + : state.scesim.model.ScenarioSimulationModel.simulation.scesimData.Scenario!; + const factMappingIndexToRemove = determineSelectedColumnIndex(factMappings, args.columnIndex + 1, isInstance); + + const { deletedFactMappingIndexs } = deleteColumn({ + factMappingIndexToRemove: factMappingIndexToRemove, + factMappings: factMappings, + factMappingValues: factMappingValues, + isBackground: isBackground, + isInstance: isInstance, + selectedColumnIndex: args.columnIndex, }); /** Updating the selectedColumn. When deleting, BEETable automatically shifts the selected cell in the left */ - const firstIndexOnTheLeft = Math.min( - ...allFactMappingWithIndexesToRemove.map((item) => item.factMappingIndex!) - ); + const firstIndexOnTheLeft = Math.min(...deletedFactMappingIndexs); const selectedColumnIndex = firstIndexOnTheLeft > 0 ? firstIndexOnTheLeft - 1 : 0; - updateSelectedColumnMetaData({ - factMapping: JSON.parse(JSON.stringify(deepClonedFactMappings[selectedColumnIndex])), + + state.dispatch(state).table.updateSelectedColumn({ + factMapping: JSON.parse(JSON.stringify(factMappings[selectedColumnIndex])), index: firstIndexOnTheLeft, - isBackground, + isBackground: isBackground, }); - - return { - ScenarioSimulationModel: { - ...prevState.ScenarioSimulationModel, - simulation: { - scesimModelDescriptor: { - factMappings: { - FactMapping: isBackground - ? prevState.ScenarioSimulationModel.simulation.scesimModelDescriptor.factMappings.FactMapping - : deepClonedFactMappings, - }, - }, - scesimData: { - Scenario: isBackground - ? prevState.ScenarioSimulationModel.simulation.scesimData.Scenario - : deepClonedRowsData, - }, - }, - background: { - scesimModelDescriptor: { - factMappings: { - FactMapping: isBackground - ? deepClonedFactMappings - : prevState.ScenarioSimulationModel.background.scesimModelDescriptor.factMappings.FactMapping, - }, - }, - scesimData: { - BackgroundData: isBackground - ? deepClonedRowsData - : prevState.ScenarioSimulationModel.background.scesimData.BackgroundData, - }, - }, - }, - }; }); }, [ - updateTestScenarioModel, - TestScenarioTableColumnInstanceGroup, - isBackground, determineSelectedColumnIndex, - columnIndexStart, - updateSelectedColumnMetaData, + isBackground, + testScenarioEditorStoreApi, + TestScenarioTableColumnFieldGroup, + TestScenarioTableColumnHeaderGroup, + TestScenarioTableColumnInstanceGroup, ] ); @@ -965,50 +639,15 @@ function TestScenarioTable({ if (isBackground) { throw new Error("Impossible state. Background table can have a single row only"); } - updateTestScenarioModel((prevState) => { - /* Creating a new Scenario (Row) composed by a list of FactMappingValues. The list order is not relevant. */ + testScenarioEditorStoreApi.setState((state) => { const factMappings = - prevState.ScenarioSimulationModel.simulation.scesimModelDescriptor.factMappings.FactMapping ?? []; - const factMappingValuesItems = factMappings.map((factMapping) => { - return { - expressionIdentifier: { - name: { __$$text: factMapping.expressionIdentifier.name!.__$$text }, - type: { __$$text: factMapping.expressionIdentifier.type!.__$$text }, - }, - factIdentifier: { - name: { __$$text: factMapping.factIdentifier.name!.__$$text }, - className: { __$$text: factMapping.factIdentifier.className!.__$$text }, - }, - rawValue: { __$$text: "", "@_class": "string" }, - }; - }); + state.scesim.model.ScenarioSimulationModel.simulation.scesimModelDescriptor.factMappings.FactMapping!; + const factMappingValues = state.scesim.model.ScenarioSimulationModel.simulation.scesimData.Scenario!; - const newScenario = { - factMappingValues: { - FactMappingValue: factMappingValuesItems, - }, - }; - - /* Cloning che current Scenario List and adding thew new Scenario previously created */ - const deepClonedScenarios = JSON.parse( - JSON.stringify(prevState.ScenarioSimulationModel.simulation.scesimData.Scenario) - ); - deepClonedScenarios.splice(args.beforeIndex, 0, newScenario); - - return { - ScenarioSimulationModel: { - ...prevState.ScenarioSimulationModel, - simulation: { - ...prevState.ScenarioSimulationModel.simulation, - scesimData: { - Scenario: deepClonedScenarios, - }, - }, - }, - }; + addRow({ beforeIndex: args.beforeIndex, factMappings: factMappings, factMappingValues: factMappingValues }); }); }, - [isBackground, updateTestScenarioModel] + [isBackground, testScenarioEditorStoreApi] ); /** @@ -1019,28 +658,13 @@ function TestScenarioTable({ if (isBackground) { throw new Error("Impossible state. Background table can have a single row only"); } - updateTestScenarioModel((prevState) => { - /* Just updating the Scenario List (Rows) cloning the current List and removing the row at the given rowIndex */ - const deepClonedScenarios = JSON.parse( - JSON.stringify(prevState.ScenarioSimulationModel.simulation.scesimData.Scenario ?? []) - ); - deepClonedScenarios.splice(args.rowIndex, 1); - - return { - ScenarioSimulationModel: { - ...prevState.ScenarioSimulationModel, - simulation: { - ...prevState.ScenarioSimulationModel.simulation, - scesimData: { - ...prevState.ScenarioSimulationModel.simulation.scesimData, - Scenario: deepClonedScenarios, - }, - }, - }, - }; + testScenarioEditorStoreApi.setState((state) => { + const factMappingValues = state.scesim.model.ScenarioSimulationModel.simulation.scesimData.Scenario!; + + deleteRow({ rowIndex: args.rowIndex, factMappingValues: factMappingValues }); }); }, - [isBackground, updateTestScenarioModel] + [isBackground, testScenarioEditorStoreApi] ); /** @@ -1051,41 +675,13 @@ function TestScenarioTable({ if (isBackground) { throw new Error("Impossible state. Background table can have a single row only"); } - updateTestScenarioModel((prevState) => { - /* It simply clones a Scenario (Row) and adds it in a current-cloned Scenario list */ - const clonedFactMappingValues = JSON.parse( - JSON.stringify( - prevState.ScenarioSimulationModel.simulation.scesimData.Scenario![args.rowIndex].factMappingValues - .FactMappingValue - ) - ); + testScenarioEditorStoreApi.setState((state) => { + const factMappingValues = state.scesim.model.ScenarioSimulationModel.simulation.scesimData.Scenario!; - const factMappingValues = { - factMappingValues: { - FactMappingValue: clonedFactMappingValues, - }, - }; - - const deepClonedScenarios = JSON.parse( - JSON.stringify(prevState.ScenarioSimulationModel.simulation.scesimData.Scenario ?? []) - ); - deepClonedScenarios.splice(args.rowIndex, 0, factMappingValues); - - return { - ScenarioSimulationModel: { - ...prevState.ScenarioSimulationModel, - simulation: { - ...prevState.ScenarioSimulationModel.simulation, - scesimData: { - ...prevState.ScenarioSimulationModel.simulation.scesimData, - Scenario: deepClonedScenarios, - }, - }, - }, - }; + dupliacteRow({ rowIndex: args.rowIndex, factMappingValues: factMappingValues }); }); }, - [isBackground, updateTestScenarioModel] + [isBackground, testScenarioEditorStoreApi] ); /** @@ -1093,9 +689,11 @@ function TestScenarioTable({ */ const onDataCellClick = useCallback( (_columnID: string) => { - updateSelectedColumnMetaData(null); + testScenarioEditorStoreApi.setState((state) => { + state.dispatch(state).table.updateSelectedColumn(null); + }); }, - [updateSelectedColumnMetaData] + [testScenarioEditorStoreApi] ); const onHeaderClick = useCallback( @@ -1105,7 +703,9 @@ function TestScenarioTable({ columnKey == TestScenarioTableColumnHeaderGroup.EXPECT || columnKey == TestScenarioTableColumnHeaderGroup.GIVEN ) { - updateSelectedColumnMetaData(null); + testScenarioEditorStoreApi.setState((state) => { + state.dispatch(state).table.updateSelectedColumn(null); + }); return; } @@ -1123,25 +723,23 @@ function TestScenarioTable({ selectedInstanceGroup?.columns[0].dataType === "" ) { const propertyID = selectedInstanceGroup?.columns[0].id; - let selectedFactMapping; - let selectedFactIndex; - if (propertyID) { - selectedFactMapping = modelDescriptor.factMappings.FactMapping!.find( - (factMapping) => factMapping.expressionIdentifier.name?.__$$text === propertyID - ); - selectedFactIndex = selectedFactMapping - ? modelDescriptor.factMappings.FactMapping!.indexOf(selectedFactMapping!) - : -1; - } - const selectedColumnMetaData = { - factMapping: JSON.parse(JSON.stringify(selectedFactMapping)), - index: selectedFactIndex ?? -1, - isBackground: isBackground, - }; - - updateSelectedColumnMetaData(selectedColumnMetaData); + const selectedFactMapping = modelDescriptor.factMappings.FactMapping!.find( + (factMapping) => factMapping.expressionIdentifier.name?.__$$text === propertyID + ); + const selectedFactIndex = selectedFactMapping + ? modelDescriptor.factMappings.FactMapping!.indexOf(selectedFactMapping!) + : -1; + testScenarioEditorStoreApi.setState((state) => { + state.dispatch(state).table.updateSelectedColumn({ + factMapping: JSON.parse(JSON.stringify(selectedFactMapping)), + index: selectedFactIndex ?? -1, + isBackground: isBackground, + }); + }); } else { - updateSelectedColumnMetaData(null); + testScenarioEditorStoreApi.setState((state) => { + state.dispatch(state).table.updateSelectedColumn(null); + }); } return; } @@ -1153,13 +751,13 @@ function TestScenarioTable({ ? modelDescriptor.factMappings.FactMapping!.indexOf(selectedFactMapping!) : -1; - const selectedColumnMetaData = { - factMapping: JSON.parse(JSON.stringify(selectedFactMapping)), - index: selectedFactIndex ?? -1, - isBackground: isBackground, - }; - - updateSelectedColumnMetaData(selectedColumnMetaData ?? null); + testScenarioEditorStoreApi.setState((state) => { + state.dispatch(state).table.updateSelectedColumn({ + factMapping: JSON.parse(JSON.stringify(selectedFactMapping)), + index: selectedFactIndex ?? -1, + isBackground: isBackground, + }); + }); }, [ TestScenarioTableColumnFieldGroup, @@ -1167,7 +765,7 @@ function TestScenarioTable({ isBackground, tableColumns.instancesGroup, tableData, - updateSelectedColumnMetaData, + testScenarioEditorStoreApi, ] ); diff --git a/packages/scesim-editor/stories/dev/DevWebApp.stories.tsx b/packages/scesim-editor/stories/dev/DevWebApp.stories.tsx index 9d17767d2bf..580fe83116e 100644 --- a/packages/scesim-editor/stories/dev/DevWebApp.stories.tsx +++ b/packages/scesim-editor/stories/dev/DevWebApp.stories.tsx @@ -17,112 +17,149 @@ * under the License. */ -import React, { useCallback, useRef, useState, useEffect } from "react"; +import React, { useCallback, useMemo, useRef, useState } from "react"; import type { Meta, StoryObj } from "@storybook/react"; -import { SceSimEditorWrapper, SceSimEditorWrapperProps } from "../scesimEditorStoriesWrapper"; -import { Button, Flex, FlexItem, Page, PageSection } from "@patternfly/react-core/dist/js"; -import { TestScenarioEditorRef } from "../../src/TestScenarioEditor"; -import { SceSimMarshaller } from "../../../scesim-marshaller/src/index"; -import { SceSimModel, getMarshaller } from "@kie-tools/scesim-marshaller"; -import { emptySceSim } from "../misc/empty/Empty.stories"; -import { isOldEnoughDrl } from "../useCases/IsOldEnoughRule.stories"; -import { trafficViolationDmn } from "../useCases/TrafficViolationDmn.stories"; -import { useArgs } from "@storybook/preview-api"; - +import "@patternfly/react-core/dist/styles/base.css"; +import { Button } from "@patternfly/react-core/dist/js/components/Button"; +import { Flex, FlexItem } from "@patternfly/react-core/dist/js/layouts/Flex"; +import { Page, PageSection } from "@patternfly/react-core/dist/js/components/Page"; +import { Stack, StackItem } from "@patternfly/react-core/dist/js"; +import { SceSimMarshaller, SceSimModel, getMarshaller } from "@kie-tools/scesim-marshaller"; +import { + ExternalDmnsIndex, + OnRequestExternalModelByPath, + OnRequestExternalModelsAvailableToInclude, + OnRequestToJumpToPath, + OnSceSimModelChange, + TestScenarioEditorProps, +} from "../../src/TestScenarioEditor"; +import { SceSimEditorWrapper } from "../scesimEditorStoriesWrapper"; +import { emptyFileName, emptySceSim } from "../misc/empty/Empty.stories"; +import { isOldEnoughDrl, isOldEnoughDrlFileName } from "../useCases/IsOldEnoughRule.stories"; +import { trafficViolationDmn, trafficViolationDmnFileName } from "../useCases/TrafficViolationDmn.stories"; +import { availableModelsByPath } from "../examples/AvailableDMNModels"; import "./DevWebApp.css"; -type DevWebAppProps = SceSimEditorWrapperProps; - -function DevWebApp(props: DevWebAppProps) { - const ref = useRef(null); - const [args, updateArgs] = useArgs(); - - const [state, setState] = useState<{ marshaller: SceSimMarshaller; stack: SceSimModel[]; pointer: number }>(() => { +function DevWebApp(props: TestScenarioEditorProps) { + const [fileName, setFileName] = useState("Untitled.scesim"); + const [state, setState] = useState<{ + marshaller: SceSimMarshaller; + pointer: number; + stack: SceSimModel[]; + }>(() => { const emptySceSimMarshaller = getMarshaller(emptySceSim); return { marshaller: emptySceSimMarshaller, - stack: [emptySceSimMarshaller.parser.parse()], pointer: 0, + stack: [emptySceSimMarshaller.parser.parse()], }; }); - const onSelectModel = useCallback((newModel) => { - const model = getMarshaller(newModel).parser.parse(); - setState((prev) => { - const newStack = prev.stack.slice(0, prev.pointer + 1); - return { - ...prev, - stack: [...newStack, model], - pointer: newStack.length, - }; - }); + const currentModel = state.stack[state.pointer]; + const downloadRef = useRef(null); + const isUndoEnabled = state.pointer > 0; + const isRedoEnabled = state.pointer !== state.stack.length - 1; + + const copyAsXml = useCallback(() => { + navigator.clipboard.writeText(state.marshaller.builder.build(currentModel)); + }, [currentModel, state.marshaller.builder]); + + const downloadAsXml = useCallback(() => { + if (downloadRef.current) { + const fileBlob = new Blob([state.marshaller.builder.build(currentModel)], { type: "text/xml" }); + downloadRef.current.download = fileName ?? `scesim-test-${makeid(10)}.scesim`; + downloadRef.current.href = URL.createObjectURL(fileBlob); + downloadRef.current.click(); + } + }, [currentModel, fileName, state.marshaller.builder]); + + // TODO Unmarshall here the DMN + const externalModelsByNamespace = useMemo(() => { + return currentModel.ScenarioSimulationModel.settings.dmnNamespace?.__$$text, {} as ExternalDmnsIndex; + }, [currentModel.ScenarioSimulationModel.settings.dmnNamespace]); + + const onDragOver = useCallback((e: React.DragEvent) => { + e.preventDefault(); // Necessary to disable the browser's default 'onDrop' handling. }, []); const onDrop = useCallback((e: React.DragEvent) => { + console.log("Test Scenario Editor :: Dev webapp :: File(s) dropped! Opening it."); + e.preventDefault(); // Necessary to disable the browser's default 'onDrop' handling. if (e.dataTransfer.items) { // Use DataTransferItemList interface to access the file(s) [...e.dataTransfer.items].forEach((item, i) => { if (item.kind === "file") { - const fileName = item.getAsFile()?.name; const reader = new FileReader(); - reader.addEventListener("load", ({ target }) => - ref.current?.setContent(fileName ?? "", target?.result as string) - ); + setFileName(item.getAsFile()?.name); + reader.addEventListener("load", ({ target }) => { + const marshaller = getMarshaller(target?.result as string); + setState({ + marshaller, + pointer: 0, + stack: [marshaller.parser.parse()], + }); + }); reader.readAsText(item.getAsFile() as any); } }); } }, []); - const onDragOver = useCallback((e: React.DragEvent) => { - e.preventDefault(); // Necessary to disable the browser's default 'onDrop' handling. + const onModelChange = useCallback((model) => { + setState((prev) => { + const newStack = prev.stack.slice(0, prev.pointer + 1); + return { + ...prev, + stack: [...newStack, model], + pointer: newStack.length, + }; + }); + }, []); + + const onRequestToJumpToPath = useCallback((path) => { + alert("A request to open this file: " + path); + }, []); + + const onSelectModel = useCallback( + (newModel, fileName) => { + onModelChange(getMarshaller(newModel).parser.parse()); + setFileName(fileName); + }, + [onModelChange] + ); + + const redo = useCallback(() => { + setState((prev) => ({ ...prev, pointer: Math.min(prev.stack.length - 1, prev.pointer + 1) })); }, []); const reset = useCallback(() => { const marshaller = getMarshaller(emptySceSim); setState({ marshaller, - stack: [marshaller.parser.parse()], pointer: 0, + stack: [marshaller.parser.parse()], }); }, []); - const currentModel = state.stack[state.pointer]; - - const downloadRef = useRef(null); - const downloadAsXml = useCallback(() => { - if (downloadRef.current) { - const fileBlob = new Blob([state.marshaller.builder.build(currentModel)], { type: "text/xml" }); - downloadRef.current.download = `scesim-${makeid(10)}.scesim`; - downloadRef.current.href = URL.createObjectURL(fileBlob); - downloadRef.current.click(); - } - }, [currentModel, state.marshaller.builder]); - - const copyAsXml = useCallback(() => { - navigator.clipboard.writeText(state.marshaller.builder.build(currentModel)); - }, [currentModel, state.marshaller.builder]); + const undo = useCallback(() => { + setState((prev) => ({ ...prev, pointer: Math.max(0, prev.pointer - 1) })); + }, []); - useEffect(() => { - updateArgs({ content: state.marshaller.builder.build(state.stack[state.stack.length - 1]) }); - }, [state.marshaller.builder, state.stack, updateArgs]); + const onRequestExternalModelByPath = useCallback(async (path) => { + return availableModelsByPath[path] ?? null; + }, []); - useEffect(() => { - onSelectModel(args.content); - }, [args.content, onSelectModel]); + const onRequestExternalModelsAvailableToInclude = useCallback(async () => { + return Object.keys(availableModelsByPath); + }, []); return ( - <> -
- - + + + +

Test Scenario Editor :: Dev WebApp

@@ -130,38 +167,76 @@ function DevWebApp(props: DevWebAppProps) {
(Drag & drop a file anywhere to open it)
+
+
+ + - +     - + +     + +     |     +     - +     |     - +     - +     - + - -
-
- - {SceSimEditorWrapper({ - pathRelativeToTheWorkspaceRoot: "dev.scesim", - content: state.marshaller.builder.build(state.stack[state.stack.length - 1]), - })} - -
-
- + + + + +
+ + {SceSimEditorWrapper({ + issueTrackerHref: props.issueTrackerHref, + externalModelsByNamespace: externalModelsByNamespace, + model: currentModel, + onModelChange: onModelChange, + onRequestExternalModelsAvailableToInclude: onRequestExternalModelsAvailableToInclude, + onRequestExternalModelByPath: onRequestExternalModelByPath, + onRequestToJumpToPath: onRequestToJumpToPath, + openFileNormalizedPosixPathRelativeToTheWorkspaceRoot: fileName, + })} + + ); } @@ -177,18 +252,19 @@ function makeid(length: number) { return result; } -const meta: Meta = { +const meta: Meta = { title: "Dev/Web App", component: DevWebApp, }; export default meta; -type Story = StoryObj; +type Story = StoryObj; export const WebApp: Story = { render: (args) => DevWebApp(args), args: { - pathRelativeToTheWorkspaceRoot: "dev.scesim", - content: emptySceSim, + issueTrackerHref: "https://github.com/apache/incubator-kie-issues/issues/new", + model: getMarshaller(emptySceSim).parser.parse(), + openFileNormalizedPosixPathRelativeToTheWorkspaceRoot: "Untitled.scesim", }, }; diff --git a/packages/scesim-editor/stories/examples/AvailableDMNModels.ts b/packages/scesim-editor/stories/examples/AvailableDMNModels.ts index 315e2451ebc..70d8fbb5f44 100644 --- a/packages/scesim-editor/stories/examples/AvailableDMNModels.ts +++ b/packages/scesim-editor/stories/examples/AvailableDMNModels.ts @@ -17,17 +17,19 @@ * under the License. */ -import { DmnLatestModel, getMarshaller } from "@kie-tools/dmn-marshaller"; +import * as TestScenarioEditor from "../../src/TestScenarioEditor"; +import { getMarshaller } from "@kie-tools/dmn-marshaller"; +import { normalize } from "@kie-tools/dmn-marshaller/dist/normalization/normalize"; import { LOAN_PRE_QUALIFICATION, TRAFFIC_VIOLATION } from "./ExternalDmnModels"; -export const loanPreQualification = getMarshaller(LOAN_PRE_QUALIFICATION, { upgradeTo: "latest" }).parser.parse(); -export const trafficViolationModel = getMarshaller(TRAFFIC_VIOLATION, { upgradeTo: "latest" }).parser.parse(); +export const loanPreQualification = normalize( + getMarshaller(LOAN_PRE_QUALIFICATION, { upgradeTo: "latest" }).parser.parse() +); +export const trafficViolationModel = normalize( + getMarshaller(TRAFFIC_VIOLATION, { upgradeTo: "latest" }).parser.parse() +); -export const avaiableModels: { - model: DmnLatestModel; - normalizedPosixPathRelativeToTheOpenFile: string; - svg: string; -}[] = [ +export const avaiableModels: TestScenarioEditor.ExternalDmn[] = [ { model: loanPreQualification, svg: "", @@ -40,19 +42,12 @@ export const avaiableModels: { }, ]; -// export const availableModelsByPath: Record = Object.values(avaiableModels).reduce( -// (acc, v) => { -// acc[v.normalizedPosixPathRelativeToTheOpenFile] = v; -// return acc; -// }, -// {} as Record -// ); - -// export const modelsByNamespace = Object.values(avaiableModels).reduce((acc, v) => { -// if (v.type === "dmn") { -// acc[v.model.definitions["@_namespace"]] = v; -// } else if (v.type === "pmml") { -// acc[getPmmlNamespace({ normalizedPosixPathRelativeToTheOpenFile: v.normalizedPosixPathRelativeToTheOpenFile })] = v; -// } -// return acc; -// }, {} as DmnEditor.ExternalModelsIndex); +export const availableModelsByPath: Record = Object.values( + avaiableModels +).reduce( + (acc, v) => { + acc[v.normalizedPosixPathRelativeToTheOpenFile] = v; + return acc; + }, + {} as Record +); diff --git a/packages/scesim-editor/stories/misc/empty/Empty.stories.tsx b/packages/scesim-editor/stories/misc/empty/Empty.stories.tsx index af7a17fc235..7aa0696d501 100644 --- a/packages/scesim-editor/stories/misc/empty/Empty.stories.tsx +++ b/packages/scesim-editor/stories/misc/empty/Empty.stories.tsx @@ -18,11 +18,13 @@ */ import type { Meta, StoryObj } from "@storybook/react"; -import { SceSimEditorWrapper, SceSimEditorWrapperProps } from "../../scesimEditorStoriesWrapper"; +import { getMarshaller } from "@kie-tools/scesim-marshaller"; import { TestScenarioEditor } from "../../../src/TestScenarioEditor"; +import { SceSimEditorWrapper, StorybookTestScenarioEditorProps } from "../../scesimEditorStoriesWrapper"; +export const emptyFileName = "Untitled.scesim"; export const emptySceSim = ` - + @@ -180,12 +182,16 @@ const meta: Meta<{}> = { }; export default meta; -type Story = StoryObj; +type Story = StoryObj; + +const marshaller = getMarshaller(emptySceSim); +const model = marshaller.parser.parse(); export const Empty: Story = { render: (args) => SceSimEditorWrapper(args), args: { - pathRelativeToTheWorkspaceRoot: "empty.scesim", - content: emptySceSim, + model: marshaller.parser.parse(), + openFileNormalizedPosixPathRelativeToTheWorkspaceRoot: emptyFileName, + xml: marshaller.builder.build(model), }, }; diff --git a/packages/scesim-editor/stories/scesimEditor/SceSimEditor.mdx b/packages/scesim-editor/stories/scesimEditor/SceSimEditor.mdx index 33f1a2e32a8..c253f319b3f 100644 --- a/packages/scesim-editor/stories/scesimEditor/SceSimEditor.mdx +++ b/packages/scesim-editor/stories/scesimEditor/SceSimEditor.mdx @@ -17,9 +17,9 @@ import { Meta } from "@storybook/blocks"; - + -# SceSim Editor +# Test Scenario Editor Before deploying them into a production environment, test scenarios enable you to validate the functionality of - Business rules and business rule data (for rules-based test scenarios) diff --git a/packages/scesim-editor/stories/scesimEditorStoriesWrapper.tsx b/packages/scesim-editor/stories/scesimEditorStoriesWrapper.tsx index 656adba6208..802302e52ca 100644 --- a/packages/scesim-editor/stories/scesimEditorStoriesWrapper.tsx +++ b/packages/scesim-editor/stories/scesimEditorStoriesWrapper.tsx @@ -18,25 +18,68 @@ */ import * as React from "react"; -import { useEffect, useRef } from "react"; -import { TestScenarioEditor, TestScenarioEditorRef } from "../src/TestScenarioEditor"; +import { useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { useArgs } from "@storybook/preview-api"; +import { diff } from "deep-object-diff"; +import { SceSimModel, getMarshaller } from "@kie-tools/scesim-marshaller"; +import { TestScenarioEditor, TestScenarioEditorProps, TestScenarioEditorRef } from "../src/TestScenarioEditor"; +import { EMPTY_ONE_EIGHT } from "../src/resources/EmptyScesimFile"; -export interface SceSimEditorWrapperProps { - pathRelativeToTheWorkspaceRoot: string; - content: string; -} +export type StorybookTestScenarioEditorProps = TestScenarioEditorProps & { xml: string }; -export function SceSimEditorWrapper(props: SceSimEditorWrapperProps) { +export function SceSimEditorWrapper(props: Partial) { + const [args, updateArgs] = useArgs(); + const argsCopy = useRef(args); const ref = useRef(null); + const [modelArgs, setModelArgs] = useState(args.model); + const model = useMemo(() => props?.model ?? modelArgs, [modelArgs, props?.model]); + + const onModelChange = useMemo( + () => (props?.onModelChange ? props.onModelChange : setModelArgs), + [props?.onModelChange] + ); useEffect(() => { - /* Simulating a call from "Foundation" code */ - ref.current?.setContent(props.pathRelativeToTheWorkspaceRoot, props.content); - }, [ref, props.content, props.pathRelativeToTheWorkspaceRoot]); + if (Object.keys(diff(argsCopy.current.model, model)).length !== 0) { + updateArgs({ + ...argsCopy.current, + model: model, + xml: getMarshaller(EMPTY_ONE_EIGHT).builder.build(model), + }); + } + }, [updateArgs, model]); + + useEffect(() => { + if (Object.keys(diff(argsCopy.current, args)).length === 0) { + return; + } + argsCopy.current = args; + if (Object.keys(diff(args.model, model)).length === 0) { + return; + } + onModelChange(args.model); + }, [args, model, onModelChange]); + + const onModelDebounceStateChanged = useCallback(() => { + console.debug("[scesimEditorStoriesWrapper] Model Debounce state"); + }, []); return ( -
- -
+ ); } diff --git a/packages/scesim-editor/stories/useCases/IsOldEnoughRule.stories.tsx b/packages/scesim-editor/stories/useCases/IsOldEnoughRule.stories.tsx index 86592e1a75d..0aa060b7715 100644 --- a/packages/scesim-editor/stories/useCases/IsOldEnoughRule.stories.tsx +++ b/packages/scesim-editor/stories/useCases/IsOldEnoughRule.stories.tsx @@ -19,9 +19,11 @@ import React from "react"; import type { Meta, StoryObj } from "@storybook/react"; +import { getMarshaller } from "@kie-tools/scesim-marshaller"; import { TestScenarioEditor } from "../../src/TestScenarioEditor"; -import { SceSimEditorWrapper, SceSimEditorWrapperProps } from "../scesimEditorStoriesWrapper"; +import { SceSimEditorWrapper, StorybookTestScenarioEditorProps } from "../scesimEditorStoriesWrapper"; +export const isOldEnoughDrlFileName = "IsOldEnough.scesim"; export const isOldEnoughDrl = ` @@ -394,12 +396,16 @@ const meta: Meta<{}> = { }; export default meta; -type Story = StoryObj; +type Story = StoryObj; + +const marshaller = getMarshaller(isOldEnoughDrl); +const model = marshaller.parser.parse(); export const IsOldEnough: Story = { - render: (args) => SceSimEditorWrapper(args), args: { - pathRelativeToTheWorkspaceRoot: "isOldEnough.scesim", - content: isOldEnoughDrl, + model: marshaller.parser.parse(), + xml: marshaller.builder.build(model), + openFileNormalizedPosixPathRelativeToTheWorkspaceRoot: isOldEnoughDrlFileName, }, + render: (args) => SceSimEditorWrapper(args), }; diff --git a/packages/scesim-editor/stories/useCases/TrafficViolationDmn.stories.tsx b/packages/scesim-editor/stories/useCases/TrafficViolationDmn.stories.tsx index 031704f4650..58856b5432a 100644 --- a/packages/scesim-editor/stories/useCases/TrafficViolationDmn.stories.tsx +++ b/packages/scesim-editor/stories/useCases/TrafficViolationDmn.stories.tsx @@ -19,9 +19,11 @@ import React from "react"; import type { Meta, StoryObj } from "@storybook/react"; +import { getMarshaller } from "@kie-tools/scesim-marshaller"; import { TestScenarioEditor } from "../../src/TestScenarioEditor"; -import { SceSimEditorWrapper, SceSimEditorWrapperProps } from "../scesimEditorStoriesWrapper"; +import { SceSimEditorWrapper, StorybookTestScenarioEditorProps } from "../scesimEditorStoriesWrapper"; +export const trafficViolationDmnFileName = "TrafficViolation.scesim"; export const trafficViolationDmn = ` @@ -796,12 +798,16 @@ const meta: Meta<{}> = { }; export default meta; -type Story = StoryObj; +type Story = StoryObj; + +const marshaller = getMarshaller(trafficViolationDmn); +const model = marshaller.parser.parse(); export const TrafficViolation: Story = { render: (args) => SceSimEditorWrapper(args), args: { - pathRelativeToTheWorkspaceRoot: "trafficViolation.scesim", - content: trafficViolationDmn, + model: marshaller.parser.parse(), + openFileNormalizedPosixPathRelativeToTheWorkspaceRoot: trafficViolationDmnFileName, + xml: marshaller.builder.build(model), }, }; diff --git a/packages/scesim-editor/tests-e2e/__screenshots__/Google-Chrome/misc/emptyExpression/create-a-new-test-scenario.png b/packages/scesim-editor/tests-e2e/__screenshots__/Google-Chrome/misc/emptyExpression/create-a-new-test-scenario.png index 97f6e8b3d07..4334ab5e3a3 100644 Binary files a/packages/scesim-editor/tests-e2e/__screenshots__/Google-Chrome/misc/emptyExpression/create-a-new-test-scenario.png and b/packages/scesim-editor/tests-e2e/__screenshots__/Google-Chrome/misc/emptyExpression/create-a-new-test-scenario.png differ diff --git a/packages/scesim-editor/tests-e2e/__screenshots__/chromium/misc/emptyExpression/create-a-new-test-scenario.png b/packages/scesim-editor/tests-e2e/__screenshots__/chromium/misc/emptyExpression/create-a-new-test-scenario.png index e85c3f76dec..7cd45f75364 100644 Binary files a/packages/scesim-editor/tests-e2e/__screenshots__/chromium/misc/emptyExpression/create-a-new-test-scenario.png and b/packages/scesim-editor/tests-e2e/__screenshots__/chromium/misc/emptyExpression/create-a-new-test-scenario.png differ diff --git a/packages/scesim-editor/tests-e2e/__screenshots__/webkit/misc/emptyExpression/create-a-new-test-scenario.png b/packages/scesim-editor/tests-e2e/__screenshots__/webkit/misc/emptyExpression/create-a-new-test-scenario.png index 30c67fbe4bf..caa7de3b78b 100644 Binary files a/packages/scesim-editor/tests-e2e/__screenshots__/webkit/misc/emptyExpression/create-a-new-test-scenario.png and b/packages/scesim-editor/tests-e2e/__screenshots__/webkit/misc/emptyExpression/create-a-new-test-scenario.png differ diff --git a/packages/scesim-marshaller/src/schemas/scesim-1_8/SceSim.xsd b/packages/scesim-marshaller/src/schemas/scesim-1_8/SceSim.xsd index 6f5ebe95ae7..efa8b3b494e 100644 --- a/packages/scesim-marshaller/src/schemas/scesim-1_8/SceSim.xsd +++ b/packages/scesim-marshaller/src/schemas/scesim-1_8/SceSim.xsd @@ -1,3 +1,20 @@ + + > src/main/resources/application.properties \ - && mvn clean package -B -ntp \ + && mvn clean package -B \ && rm -rf target/ diff --git a/packages/serverless-logic-web-tools-swf-dev-mode-image/Containerfile b/packages/serverless-logic-web-tools-swf-dev-mode-image/Containerfile index 1038ffd3cc4..461cab7af48 100644 --- a/packages/serverless-logic-web-tools-swf-dev-mode-image/Containerfile +++ b/packages/serverless-logic-web-tools-swf-dev-mode-image/Containerfile @@ -34,7 +34,6 @@ RUN chown kogito /home/kogito/.m2 && \ mvn clean package \ quarkus:go-offline \ -B \ - -ntp \ -s /home/kogito/.m2/settings.xml \ -Dmaven.test.skip \ -Dmaven.repo.local=/home/kogito/.m2/repository \ diff --git a/packages/serverless-logic-web-tools-swf-dev-mode-image/entrypoint.sh b/packages/serverless-logic-web-tools-swf-dev-mode-image/entrypoint.sh index 1b98d1080b6..6695bbf1449 100644 --- a/packages/serverless-logic-web-tools-swf-dev-mode-image/entrypoint.sh +++ b/packages/serverless-logic-web-tools-swf-dev-mode-image/entrypoint.sh @@ -26,7 +26,7 @@ cd /tmp/app/serverless-logic-web-tools-swf-deployment-quarkus-app mvn quarkus:dev \ -nsu \ - -ntp \ + -B \ -o \ -s /home/kogito/.m2/settings.xml \ -Ddebug=false \ diff --git a/packages/serverless-workflow-vscode-extension/package.json b/packages/serverless-workflow-vscode-extension/package.json index 601505a268c..50e4a75384e 100644 --- a/packages/serverless-workflow-vscode-extension/package.json +++ b/packages/serverless-workflow-vscode-extension/package.json @@ -80,7 +80,7 @@ "sanitize-filename-ts": "^1.0.2", "selenium-webdriver": "^4.15.0", "typescript": "^5.5.3", - "vscode-extension-tester": "^8.3.1", + "vscode-extension-tester": "^8.8.0", "webpack": "^5.94.0", "webpack-cli": "^4.10.0", "webpack-dev-server": "^4.15.1", diff --git a/packages/sonataflow-builder-image/test-resources/tests/features/sonataflow-builder.feature b/packages/sonataflow-builder-image/test-resources/tests/features/sonataflow-builder.feature index a4e1bdfcf6b..fefd17bc48f 100644 --- a/packages/sonataflow-builder-image/test-resources/tests/features/sonataflow-builder.feature +++ b/packages/sonataflow-builder-image/test-resources/tests/features/sonataflow-builder.feature @@ -12,7 +12,6 @@ Feature: Serverless Workflow builder images | wait | 480 | | request_method | GET | | expected_status_code | 200 | - And container log should contain --no-transfer-progress And container log should contain -Duser.home=/home/kogito And container log should match regex Installed features:.*kogito-serverless-workflow And container log should match regex Installed features:.*kie-addon-knative-eventing-extension diff --git a/packages/sonataflow-dev-app/package.json b/packages/sonataflow-dev-app/package.json index 879b4c2a131..f3aa1eb76db 100644 --- a/packages/sonataflow-dev-app/package.json +++ b/packages/sonataflow-dev-app/package.json @@ -28,7 +28,7 @@ "babel-jest": "^25.5.1", "body-parser": "^1.20.3", "cors": "^2.8.5", - "express": "^4.21.0", + "express": "^4.21.1", "express-rate-limit": "^7.4.0", "graphql": "14.3.1", "jest": "^29.7.0", diff --git a/packages/sonataflow-devmode-image/resources/modules/sonataflow/devmode/build-config/module.yaml b/packages/sonataflow-devmode-image/resources/modules/sonataflow/devmode/build-config/module.yaml index 0309962fee2..5b271764932 100644 --- a/packages/sonataflow-devmode-image/resources/modules/sonataflow/devmode/build-config/module.yaml +++ b/packages/sonataflow-devmode-image/resources/modules/sonataflow/devmode/build-config/module.yaml @@ -27,7 +27,7 @@ envs: - name: QUARKUS_EXTENSIONS # NOTE: If you change the QUARKUS_EXTENSIONS value remember to update the scripts/logic/build-quarkus-app.sh too! # Follow up issue to remove KOGITO_VERSION: https://issues.redhat.com/browse/KOGITO-9270 - value: org.apache.kie.sonataflow:sonataflow-quarkus:${KOGITO_VERSION},org.kie:kie-addons-quarkus-knative-eventing:${KOGITO_VERSION},smallrye-health,org.apache.kie.sonataflow:sonataflow-quarkus-devui:${SONATAFLOW_QUARKUS_DEVUI_VERSION},org.kie:kie-addons-quarkus-source-files:${KOGITO_VERSION},org.kie:kie-addons-quarkus-process-management:${KOGITO_VERSION},org.kie:kogito-addons-quarkus-jobs-service-embedded:${KOGITO_VERSION},org.kie:kogito-addons-quarkus-data-index-inmemory:${KOGITO_VERSION},org.kie:kogito-addons-quarkus-microprofile-config-service-catalog:${KOGITO_VERSION},org.kie:kie-addons-quarkus-kubernetes:${KOGITO_VERSION},org.kie:kogito-addons-quarkus-knative-serving:${KOGITO_VERSION} + value: org.apache.kie.sonataflow:sonataflow-quarkus:${KOGITO_VERSION},org.kie:kie-addons-quarkus-knative-eventing:${KOGITO_VERSION},smallrye-health,org.apache.kie.sonataflow:sonataflow-quarkus-devui:${SONATAFLOW_QUARKUS_DEVUI_VERSION},org.kie:kie-addons-quarkus-source-files:${KOGITO_VERSION},org.kie:kie-addons-quarkus-process-management:${KOGITO_VERSION},org.kie:kogito-addons-quarkus-jobs-service-embedded:${KOGITO_VERSION},org.kie:kogito-addons-quarkus-data-index-inmemory:${KOGITO_VERSION},org.kie:kogito-addons-quarkus-microprofile-config-service-catalog:${KOGITO_VERSION},org.kie:kie-addons-quarkus-kubernetes:${KOGITO_VERSION},org.kie:kogito-addons-quarkus-knative-serving:${KOGITO_VERSION},org.kie:kie-addons-quarkus-monitoring-prometheus:${KOGITO_VERSION},org.kie:kie-addons-quarkus-monitoring-sonataflow:${KOGITO_VERSION} execute: - script: configure diff --git a/packages/sonataflow-devmode-image/test-resources/tests/features/sonataflow-devmode.feature b/packages/sonataflow-devmode-image/test-resources/tests/features/sonataflow-devmode.feature index 7ba91ee955e..f9abddb709d 100644 --- a/packages/sonataflow-devmode-image/test-resources/tests/features/sonataflow-devmode.feature +++ b/packages/sonataflow-devmode-image/test-resources/tests/features/sonataflow-devmode.feature @@ -12,7 +12,6 @@ Feature: Serverless Workflow devmode images | wait | 480 | | request_method | GET | | expected_status_code | 200 | - And container log should contain --no-transfer-progress And container log should contain -Duser.home=/home/kogito -o And container log should contain -Dquarkus.test.continuous-testing=disabled And container log should match regex Installed features:.*kogito-serverless-workflow diff --git a/packages/sonataflow-image-common/resources/Makefile b/packages/sonataflow-image-common/resources/Makefile index 834de6f6efc..7f72573fb18 100644 --- a/packages/sonataflow-image-common/resources/Makefile +++ b/packages/sonataflow-image-common/resources/Makefile @@ -66,12 +66,6 @@ _create_e2e_dir: rm -rf ../dist-tests-e2e mkdir ../dist-tests-e2e -# Pull kogito-apps repo and build the target kogito-apps depending on the `KOGITO_IMAGE_NAME`s -# Required for kogito-apps images only -.PHONY build-kogito-app: _build_kogito_app -_build_kogito_app: - scripts/build-kogito-apps-components.sh ${KOGITO_IMAGE_NAME} ${KOGITO_VERSION} ${KOGITO_APPS_TARGET_URI}; - # Trigger the image tests .PHONY test-image: _create_e2e_dir _check_kogito_image_name _test_image _test_image: diff --git a/packages/sonataflow-image-common/resources/modules/kogito-maven/common/added/configure-maven.sh b/packages/sonataflow-image-common/resources/modules/kogito-maven/common/added/configure-maven.sh index b2b41b7cba4..8b0334342b4 100644 --- a/packages/sonataflow-image-common/resources/modules/kogito-maven/common/added/configure-maven.sh +++ b/packages/sonataflow-image-common/resources/modules/kogito-maven/common/added/configure-maven.sh @@ -127,7 +127,7 @@ function configure_mirrors() { function configure_maven_download_output() { if [ "${MAVEN_DOWNLOAD_OUTPUT}" != "true" ]; then - export MAVEN_ARGS_APPEND="${MAVEN_ARGS_APPEND} --no-transfer-progress" + export MAVEN_ARGS_APPEND="${MAVEN_ARGS_APPEND}" fi } diff --git a/packages/sonataflow-image-common/resources/modules/kogito-maven/common/maven/maven-m2-repo-via-http-settings.xml.envsubst b/packages/sonataflow-image-common/resources/modules/kogito-maven/common/maven/maven-m2-repo-via-http-settings.xml.envsubst index e85c5fc1703..ad8a808e6c8 100644 --- a/packages/sonataflow-image-common/resources/modules/kogito-maven/common/maven/maven-m2-repo-via-http-settings.xml.envsubst +++ b/packages/sonataflow-image-common/resources/modules/kogito-maven/common/maven/maven-m2-repo-via-http-settings.xml.envsubst @@ -34,74 +34,101 @@ true never + ignore true never + ignore - - - - - kie-tools--maven-m2-repo-via-http - KIE Tools :: Maven M2 Repo via HTTP - http://$M2_REPO_VIA_HTTP_URL_WITHOUT_PROTOCOL/ - default + + apache.snapshots + Apache Snapshot Repository + https://repository.apache.org/snapshots - true - never + false true never - - - - - - kogito-images - + + + central + Central Repository + https://repo.maven.apache.org/maven2 + + false + + apache-public-repository-group Apache Public Repository Group - https://repository.apache.org/content/groups/public/ + https://repo.maven.apache.org/maven2 default - true + false never - true + false + never + + + + jboss-public-repository-group + JBOSS Public Repository Group + https://repo.maven.apache.org/maven2 + default + + false + never + + + false never - + + kie-tools--maven-m2-repo-via-http + KIE Tools :: Maven M2 Repo via HTTP + http://$M2_REPO_VIA_HTTP_URL_WITHOUT_PROTOCOL/ + default + + true + never + ignore + + + true + never + ignore + + apache-public-repository-group Apache Public Repository Group https://repository.apache.org/content/groups/public/ default - true + false never - true + false never - + - kogito-images - kie-tools--maven-m2-repo-via-http-allowed-profile + kie-tools--maven-m2-repo-via-http-allowed-profile diff --git a/packages/sonataflow-image-common/resources/modules/kogito-maven/tests/bats/maven-settings.bats b/packages/sonataflow-image-common/resources/modules/kogito-maven/common/tests/bats/maven-settings.bats similarity index 98% rename from packages/sonataflow-image-common/resources/modules/kogito-maven/tests/bats/maven-settings.bats rename to packages/sonataflow-image-common/resources/modules/kogito-maven/common/tests/bats/maven-settings.bats index 66fb2363532..a986a92642a 100644 --- a/packages/sonataflow-image-common/resources/modules/kogito-maven/tests/bats/maven-settings.bats +++ b/packages/sonataflow-image-common/resources/modules/kogito-maven/common/tests/bats/maven-settings.bats @@ -20,13 +20,13 @@ # imports -source $BATS_TEST_DIRNAME/../../common/added/configure-maven.sh +source $BATS_TEST_DIRNAME/../../added/configure-maven.sh setup() { export KOGITO_HOME=$BATS_TMPDIR/maven mkdir -p ${KOGITO_HOME}/.m2/ - cp $BATS_TEST_DIRNAME/../../common/maven/settings.xml ${KOGITO_HOME}/.m2/ + cp $BATS_TEST_DIRNAME/../../maven/settings.xml ${KOGITO_HOME}/.m2/ export MAVEN_SETTINGS_PATH="${KOGITO_HOME}/.m2/settings.xml" } @@ -163,16 +163,6 @@ function _generate_random_id() { [ "${expected}" = "${result}" ] } -@test "test maven download output logs when MAVEN_DOWNLOAD_OUTPUT is not true" { - prepareEnv - configure_maven_download_output - expected=" --no-transfer-progress" - result="${MAVEN_ARGS_APPEND}" - echo "expected=${expected}" - echo "result=${result}" - [ "${expected}" = "${result}" ] -} - @test "test maven download output logs when MAVEN_DOWNLOAD_OUTPUT is true" { prepareEnv MAVEN_DOWNLOAD_OUTPUT="true" diff --git a/packages/sonataflow-image-common/resources/modules/sonataflow/common/scripts/added/add-extension.sh b/packages/sonataflow-image-common/resources/modules/sonataflow/common/scripts/added/add-extension.sh index fcce1f5ae26..dc4ab3e7928 100755 --- a/packages/sonataflow-image-common/resources/modules/sonataflow/common/scripts/added/add-extension.sh +++ b/packages/sonataflow-image-common/resources/modules/sonataflow/common/scripts/added/add-extension.sh @@ -42,7 +42,7 @@ fi "${MAVEN_HOME}"/bin/mvn -B ${MAVEN_ARGS_APPEND} \ -nsu \ - -ntp \ + -B \ -s "${MAVEN_SETTINGS_PATH}" \ -DplatformVersion="${QUARKUS_PLATFORM_VERSION}" \ -Dextensions="${extensions}" \ diff --git a/packages/sonataflow-image-common/resources/modules/sonataflow/common/scripts/added/build-app.sh b/packages/sonataflow-image-common/resources/modules/sonataflow/common/scripts/added/build-app.sh index 0cd6311d6fc..d91ceed6ea2 100755 --- a/packages/sonataflow-image-common/resources/modules/sonataflow/common/scripts/added/build-app.sh +++ b/packages/sonataflow-image-common/resources/modules/sonataflow/common/scripts/added/build-app.sh @@ -59,7 +59,7 @@ cd ${KOGITO_HOME}/serverless-workflow-project "${MAVEN_HOME}"/bin/mvn -B ${MAVEN_ARGS_APPEND} \ -nsu \ - -ntp \ + -B \ -s "${MAVEN_SETTINGS_PATH}" \ -DskipTests \ -Dquarkus.container-image.build=false \ diff --git a/packages/sonataflow-image-common/resources/modules/sonataflow/common/scripts/added/create-app.sh b/packages/sonataflow-image-common/resources/modules/sonataflow/common/scripts/added/create-app.sh index 3534ca868cf..5dedc599f2d 100755 --- a/packages/sonataflow-image-common/resources/modules/sonataflow/common/scripts/added/create-app.sh +++ b/packages/sonataflow-image-common/resources/modules/sonataflow/common/scripts/added/create-app.sh @@ -36,7 +36,7 @@ source "${script_dir_path}"/configure-jvm-mvn.sh "${MAVEN_HOME}"/bin/mvn -B ${MAVEN_ARGS_APPEND} \ -nsu \ - -ntp \ + -B \ -s "${MAVEN_SETTINGS_PATH}" \ io.quarkus.platform:quarkus-maven-plugin:"${QUARKUS_PLATFORM_VERSION}":create ${QUARKUS_CREATE_ARGS} \ -DprojectGroupId="${PROJECT_GROUP_ID}" \ @@ -131,7 +131,7 @@ fi # https://maven.apache.org/plugins/maven-dependency-plugin/go-offline-mojo.html "${MAVEN_HOME}"/bin/mvn -B ${MAVEN_ARGS_APPEND} \ -nsu \ - -ntp \ + -B \ -s "${MAVEN_SETTINGS_PATH}" \ -DskipTests=true \ -Dmaven.javadoc.skip=true \ @@ -140,6 +140,6 @@ fi # clean up "${MAVEN_HOME}"/bin/mvn -B ${MAVEN_ARGS_APPEND} \ -nsu \ - -ntp \ + -B \ -s "${MAVEN_SETTINGS_PATH}" \ clean diff --git a/packages/sonataflow-image-common/resources/scripts/README.md b/packages/sonataflow-image-common/resources/scripts/README.md index 34a4fcd0c85..589ecacfae8 100644 --- a/packages/sonataflow-image-common/resources/scripts/README.md +++ b/packages/sonataflow-image-common/resources/scripts/README.md @@ -63,10 +63,6 @@ Usage: - `--quarkus-version`: Sets the Quarkus version - `--kogito-version`: Sets the Kogito version -## Build Kogito Apps Components - -The [build-kogito-apps-components.sh](build-kogito-apps-components.sh) script pulls and build the target Kogito Apps application, e.g., Data Index. Required to build Kogito Services images in any flavour. - ## Setup Maven The [setup-maven.sh](setup-maven.sh) script configures the internal image Maven repository such as adding new repositories, setup other profiles and so on. diff --git a/packages/sonataflow-image-common/resources/scripts/common.py b/packages/sonataflow-image-common/resources/scripts/common.py index 30cbdc44c93..35ce2c44462 100644 --- a/packages/sonataflow-image-common/resources/scripts/common.py +++ b/packages/sonataflow-image-common/resources/scripts/common.py @@ -268,7 +268,7 @@ def update_label_value_in_file(filename, label_name, label_value): :param label_name: label name to update :param label_value: value to set """ - print("Updating {0} label {1} with value {2}".format(filename, label_name, label_value)) + print(f"Updating {filename} label {label_name} with value {label_value}") try: with open(filename) as yaml_file: data = yaml_loader().load(yaml_file) @@ -281,7 +281,7 @@ def update_label_value_in_file(filename, label_name, label_value): raise -def update_label_value_in_data(data, label_name, label_value, ignore_empty = False): +def update_label_value_in_data(data, label_name, label_value, ignore_empty=False): """ Update label value in data dict if exists :param data: dict to update @@ -296,7 +296,7 @@ def update_label_value_in_data(data, label_name, label_value, ignore_empty = Fal if ignore_empty: if 'labels' not in data: data['labels'] = [] - data['labels'] += [ dict(name=label_name, value=label_value) ] + data['labels'] += [dict(name=label_name, value=label_value)] elif 'labels' in data: for _, label in enumerate(data['labels'], start=0): if label['name'] == label_name: diff --git a/packages/sonataflow-image-common/resources/scripts/setup-maven.sh b/packages/sonataflow-image-common/resources/scripts/setup-maven.sh index 78be682dfe7..d2cf3751a94 100755 --- a/packages/sonataflow-image-common/resources/scripts/setup-maven.sh +++ b/packages/sonataflow-image-common/resources/scripts/setup-maven.sh @@ -48,26 +48,6 @@ configure export MAVEN_OPTIONS="${MAVEN_OPTIONS} -s ${maven_settings_path}" -# Add NPM registry if needed -if [ ! -z "${NPM_REGISTRY_URL}" ]; then - echo "enabling npm repository: ${NPM_REGISTRY_URL}" - npm_profile="\ -\ -internal-npm-registry\ -\ -${NPM_REGISTRY_URL}\ -http://download.devel.redhat.com/rcm-guest/staging/rhba/dist/yarn/\ -http://download.devel.redhat.com/rcm-guest/staging/rhba/dist/node/\ -http://download.devel.redhat.com/rcm-guest/staging/rhba/dist/npm/\ -http://download.devel.redhat.com/rcm-guest/staging/rhba/dist/pnpm/\ -\ -\ -" - sed -i.bak -E "s|()|\1\n${npm_profile}|" "${MAVEN_SETTINGS_PATH}" - sed -i.bak -E "s|()|\1\ninternal-npm-registry|" "${MAVEN_SETTINGS_PATH}" - - rm -rf "${MAVEN_SETTINGS_PATH}/*.bak" -fi cat "${maven_settings_path}" diff --git a/packages/sonataflow-operator/test/testdata/platform/noservices/preview/ephemeral/02-sonataflow_platform.yaml b/packages/sonataflow-operator/test/testdata/platform/noservices/preview/ephemeral/02-sonataflow_platform.yaml index 7d7a0c7834d..82235f4cd1a 100644 --- a/packages/sonataflow-operator/test/testdata/platform/noservices/preview/ephemeral/02-sonataflow_platform.yaml +++ b/packages/sonataflow-operator/test/testdata/platform/noservices/preview/ephemeral/02-sonataflow_platform.yaml @@ -26,7 +26,7 @@ spec: template: buildArgs: - name: QUARKUS_EXTENSION - value: org.kie.kogito:kogito-addons-quarkus-jobs-knative-eventing:999-20240912-SNAPSHOT + value: org.kie.kogito:kogito-addons-quarkus-jobs-knative-eventing:999-20241016-SNAPSHOT config: strategyOptions: KanikoBuildCacheEnabled: "true" diff --git a/packages/sonataflow-operator/test/testdata/platform/services/dev/ephemeral/02-sonataflow_platform.yaml b/packages/sonataflow-operator/test/testdata/platform/services/dev/ephemeral/02-sonataflow_platform.yaml index b191414226d..fd925ab2b08 100644 --- a/packages/sonataflow-operator/test/testdata/platform/services/dev/ephemeral/02-sonataflow_platform.yaml +++ b/packages/sonataflow-operator/test/testdata/platform/services/dev/ephemeral/02-sonataflow_platform.yaml @@ -26,7 +26,7 @@ spec: template: buildArgs: - name: QUARKUS_EXTENSION - value: org.kie.kogito:kogito-addons-quarkus-jobs-knative-eventing:999-20240912-SNAPSHOT + value: org.kie.kogito:kogito-addons-quarkus-jobs-knative-eventing:999-20241016-SNAPSHOT config: strategyOptions: KanikoBuildCacheEnabled: "true" diff --git a/packages/sonataflow-operator/test/testdata/platform/services/dev/postgreSQL/02-sonataflow_platform.yaml b/packages/sonataflow-operator/test/testdata/platform/services/dev/postgreSQL/02-sonataflow_platform.yaml index ef4f112e9e4..f5d695d1bae 100644 --- a/packages/sonataflow-operator/test/testdata/platform/services/dev/postgreSQL/02-sonataflow_platform.yaml +++ b/packages/sonataflow-operator/test/testdata/platform/services/dev/postgreSQL/02-sonataflow_platform.yaml @@ -26,7 +26,7 @@ spec: template: buildArgs: - name: QUARKUS_EXTENSIONS - value: org.kie.kogito:kogito-addons-quarkus-jobs-knative-eventing:999-20240912-SNAPSHOT + value: org.kie.kogito:kogito-addons-quarkus-jobs-knative-eventing:999-20241016-SNAPSHOT services: dataIndex: enabled: false diff --git a/packages/sonataflow-operator/test/testdata/platform/services/preview/cluster-wide-ephemeral/02-sonataflow_platform.yaml b/packages/sonataflow-operator/test/testdata/platform/services/preview/cluster-wide-ephemeral/02-sonataflow_platform.yaml index 7e915e2cd76..904419541ce 100644 --- a/packages/sonataflow-operator/test/testdata/platform/services/preview/cluster-wide-ephemeral/02-sonataflow_platform.yaml +++ b/packages/sonataflow-operator/test/testdata/platform/services/preview/cluster-wide-ephemeral/02-sonataflow_platform.yaml @@ -26,7 +26,7 @@ spec: template: buildArgs: - name: QUARKUS_EXTENSION - value: org.kie.kogito:kogito-addons-quarkus-jobs-knative-eventing:999-20240912-SNAPSHOT + value: org.kie.kogito:kogito-addons-quarkus-jobs-knative-eventing:999-20241016-SNAPSHOT config: strategyOptions: KanikoBuildCacheEnabled: "true" diff --git a/packages/sonataflow-operator/test/testdata/platform/services/preview/ephemeral-data-index/02-sonataflow_platform.yaml b/packages/sonataflow-operator/test/testdata/platform/services/preview/ephemeral-data-index/02-sonataflow_platform.yaml index 7c1d15d02de..8d0a11a74c6 100644 --- a/packages/sonataflow-operator/test/testdata/platform/services/preview/ephemeral-data-index/02-sonataflow_platform.yaml +++ b/packages/sonataflow-operator/test/testdata/platform/services/preview/ephemeral-data-index/02-sonataflow_platform.yaml @@ -26,7 +26,7 @@ spec: template: buildArgs: - name: QUARKUS_EXTENSION - value: org.kie.kogito:kogito-addons-quarkus-jobs-knative-eventing:999-20240912-SNAPSHOT + value: org.kie.kogito:kogito-addons-quarkus-jobs-knative-eventing:999-20241016-SNAPSHOT config: strategyOptions: KanikoBuildCacheEnabled: "true" diff --git a/packages/sonataflow-operator/test/testdata/platform/services/preview/ephemeral-job-service/02-sonataflow_platform.yaml b/packages/sonataflow-operator/test/testdata/platform/services/preview/ephemeral-job-service/02-sonataflow_platform.yaml index 735b2c4150d..cb119bb6d3e 100644 --- a/packages/sonataflow-operator/test/testdata/platform/services/preview/ephemeral-job-service/02-sonataflow_platform.yaml +++ b/packages/sonataflow-operator/test/testdata/platform/services/preview/ephemeral-job-service/02-sonataflow_platform.yaml @@ -25,7 +25,7 @@ spec: template: buildArgs: - name: QUARKUS_EXTENSION - value: org.kie.kogito:kogito-addons-quarkus-jobs-knative-eventing:999-20240912-SNAPSHOT + value: org.kie.kogito:kogito-addons-quarkus-jobs-knative-eventing:999-20241016-SNAPSHOT config: strategyOptions: KanikoBuildCacheEnabled: "true" diff --git a/packages/sonataflow-operator/test/testdata/workflow/persistence/by_service/02-sonataflow_platform.yaml b/packages/sonataflow-operator/test/testdata/workflow/persistence/by_service/02-sonataflow_platform.yaml index 73f61014068..a9cc3847d80 100644 --- a/packages/sonataflow-operator/test/testdata/workflow/persistence/by_service/02-sonataflow_platform.yaml +++ b/packages/sonataflow-operator/test/testdata/workflow/persistence/by_service/02-sonataflow_platform.yaml @@ -26,7 +26,7 @@ spec: template: buildArgs: - name: QUARKUS_EXTENSIONS - value: org.kie:kie-addons-quarkus-persistence-jdbc:999-20240912-SNAPSHOT,io.quarkus:quarkus-jdbc-postgresql:3.8.6,io.quarkus:quarkus-agroal:3.8.6 + value: org.kie:kie-addons-quarkus-persistence-jdbc:999-20241016-SNAPSHOT,io.quarkus:quarkus-jdbc-postgresql:3.8.6,io.quarkus:quarkus-agroal:3.8.6 config: strategyOptions: KanikoBuildCacheEnabled: "true" diff --git a/packages/sonataflow-operator/test/testdata/workflow/persistence/from_platform_overwritten_by_service/02-sonataflow_platform.yaml b/packages/sonataflow-operator/test/testdata/workflow/persistence/from_platform_overwritten_by_service/02-sonataflow_platform.yaml index 49d9a7ae895..f10df872ac4 100644 --- a/packages/sonataflow-operator/test/testdata/workflow/persistence/from_platform_overwritten_by_service/02-sonataflow_platform.yaml +++ b/packages/sonataflow-operator/test/testdata/workflow/persistence/from_platform_overwritten_by_service/02-sonataflow_platform.yaml @@ -36,7 +36,7 @@ spec: template: buildArgs: - name: QUARKUS_EXTENSIONS - value: org.kie:kie-addons-quarkus-persistence-jdbc:999-20240912-SNAPSHOT,io.quarkus:quarkus-jdbc-postgresql:3.8.6,io.quarkus:quarkus-agroal:3.8.6 + value: org.kie:kie-addons-quarkus-persistence-jdbc:999-20241016-SNAPSHOT,io.quarkus:quarkus-jdbc-postgresql:3.8.6,io.quarkus:quarkus-agroal:3.8.6 config: strategyOptions: KanikoBuildCacheEnabled: "true" diff --git a/packages/sonataflow-operator/test/testdata/workflow/persistence/from_platform_with_di_and_js_services/02-sonataflow_platform.yaml b/packages/sonataflow-operator/test/testdata/workflow/persistence/from_platform_with_di_and_js_services/02-sonataflow_platform.yaml index 4003263627c..8f23dbc2090 100644 --- a/packages/sonataflow-operator/test/testdata/workflow/persistence/from_platform_with_di_and_js_services/02-sonataflow_platform.yaml +++ b/packages/sonataflow-operator/test/testdata/workflow/persistence/from_platform_with_di_and_js_services/02-sonataflow_platform.yaml @@ -36,7 +36,7 @@ spec: template: buildArgs: - name: QUARKUS_EXTENSIONS - value: org.kie:kie-addons-quarkus-persistence-jdbc:999-20240912-SNAPSHOT,io.quarkus:quarkus-jdbc-postgresql:3.8.6,io.quarkus:quarkus-agroal:3.8.6 + value: org.kie:kie-addons-quarkus-persistence-jdbc:999-20241016-SNAPSHOT,io.quarkus:quarkus-jdbc-postgresql:3.8.6,io.quarkus:quarkus-agroal:3.8.6 config: strategyOptions: KanikoBuildCacheEnabled: "true" diff --git a/packages/sonataflow-operator/test/testdata/workflow/persistence/from_platform_with_no_persistence_required/02-sonataflow_platform.yaml b/packages/sonataflow-operator/test/testdata/workflow/persistence/from_platform_with_no_persistence_required/02-sonataflow_platform.yaml index db0fb8d8284..ee47d71bbb0 100644 --- a/packages/sonataflow-operator/test/testdata/workflow/persistence/from_platform_with_no_persistence_required/02-sonataflow_platform.yaml +++ b/packages/sonataflow-operator/test/testdata/workflow/persistence/from_platform_with_no_persistence_required/02-sonataflow_platform.yaml @@ -36,7 +36,7 @@ spec: template: buildArgs: - name: QUARKUS_EXTENSIONS - value: org.kie:kie-addons-quarkus-persistence-jdbc:999-20240912-SNAPSHOT,io.quarkus:quarkus-jdbc-postgresql:3.8.6,io.quarkus:quarkus-agroal:3.8.6 + value: org.kie:kie-addons-quarkus-persistence-jdbc:999-20241016-SNAPSHOT,io.quarkus:quarkus-jdbc-postgresql:3.8.6,io.quarkus:quarkus-agroal:3.8.6 config: strategyOptions: KanikoBuildCacheEnabled: "true" diff --git a/packages/sonataflow-operator/test/testdata/workflow/persistence/from_platform_without_di_and_js_services/02-sonataflow_platform.yaml b/packages/sonataflow-operator/test/testdata/workflow/persistence/from_platform_without_di_and_js_services/02-sonataflow_platform.yaml index db0fb8d8284..ee47d71bbb0 100644 --- a/packages/sonataflow-operator/test/testdata/workflow/persistence/from_platform_without_di_and_js_services/02-sonataflow_platform.yaml +++ b/packages/sonataflow-operator/test/testdata/workflow/persistence/from_platform_without_di_and_js_services/02-sonataflow_platform.yaml @@ -36,7 +36,7 @@ spec: template: buildArgs: - name: QUARKUS_EXTENSIONS - value: org.kie:kie-addons-quarkus-persistence-jdbc:999-20240912-SNAPSHOT,io.quarkus:quarkus-jdbc-postgresql:3.8.6,io.quarkus:quarkus-agroal:3.8.6 + value: org.kie:kie-addons-quarkus-persistence-jdbc:999-20241016-SNAPSHOT,io.quarkus:quarkus-jdbc-postgresql:3.8.6,io.quarkus:quarkus-agroal:3.8.6 config: strategyOptions: KanikoBuildCacheEnabled: "true" diff --git a/packages/storybook-base/src/config/baseConfig.ts b/packages/storybook-base/src/config/baseConfig.ts index 7af3802d885..384d9fe0f3a 100644 --- a/packages/storybook-base/src/config/baseConfig.ts +++ b/packages/storybook-base/src/config/baseConfig.ts @@ -60,7 +60,9 @@ export const baseConfig: ( path.dirname(require.resolve("@storybook/addon-webpack5-compiler-babel/package.json")), ], webpackFinal: async (config) => { - return merge(config, common); + // Preserve Storybook output configurations + const commonConfig = { ...common, output: undefined }; + return merge(config, commonConfig); }, }; }; diff --git a/packages/stunner-editors/errai-ui/src/test/resources/less.jar b/packages/stunner-editors/errai-ui/src/test/resources/less.jar deleted file mode 100644 index cdce000cd1d..00000000000 Binary files a/packages/stunner-editors/errai-ui/src/test/resources/less.jar and /dev/null differ diff --git a/packages/vscode-extension-common-test-helpers/package.json b/packages/vscode-extension-common-test-helpers/package.json index ee602f25809..576eb4451f2 100644 --- a/packages/vscode-extension-common-test-helpers/package.json +++ b/packages/vscode-extension-common-test-helpers/package.json @@ -35,10 +35,10 @@ "mocha": "^10.6.0", "rimraf": "^3.0.2", "typescript": "^5.5.3", - "vscode-extension-tester": "^8.3.1" + "vscode-extension-tester": "^8.8.0" }, "peerDependencies": { "mocha": "^10.6.0", - "vscode-extension-tester": "^8.3.1" + "vscode-extension-tester": "^8.8.0" } } diff --git a/packages/vscode-extension-dashbuilder-editor/package.json b/packages/vscode-extension-dashbuilder-editor/package.json index 254624cb1ee..24d93d939fc 100644 --- a/packages/vscode-extension-dashbuilder-editor/package.json +++ b/packages/vscode-extension-dashbuilder-editor/package.json @@ -69,7 +69,7 @@ "sanitize-filename-ts": "^1.0.2", "selenium-webdriver": "^4.15.0", "typescript": "^5.5.3", - "vscode-extension-tester": "^8.3.1", + "vscode-extension-tester": "^8.8.0", "webpack": "^5.94.0", "webpack-cli": "^4.10.0", "webpack-dev-server": "^4.15.1", diff --git a/packages/yard-vscode-extension/package.json b/packages/yard-vscode-extension/package.json index f8b1ef49ce4..ecff850f0e5 100644 --- a/packages/yard-vscode-extension/package.json +++ b/packages/yard-vscode-extension/package.json @@ -72,7 +72,7 @@ "sanitize-filename-ts": "^1.0.2", "selenium-webdriver": "^4.15.0", "typescript": "^5.5.3", - "vscode-extension-tester": "^8.3.1", + "vscode-extension-tester": "^8.8.0", "webpack": "^5.94.0", "webpack-cli": "^4.10.0", "webpack-dev-server": "^4.15.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a7977bd811f..2b56e36c473 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -325,9 +325,6 @@ importers: '@kie-tools/kogito-management-console': specifier: workspace:* version: link:../../packages/kogito-management-console - '@kie-tools/kogito-task-console': - specifier: workspace:* - version: link:../../packages/kogito-task-console '@kie-tools/root-env': specifier: workspace:* version: link:../../packages/root-env @@ -852,13 +849,13 @@ importers: version: 1.67.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) + version: 29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)) jest-junit: specifier: ^16.0.0 version: 16.0.0 jest-when: specifier: ^3.6.0 - version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))) + version: 3.6.0(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3))) rimraf: specifier: ^3.0.2 version: 3.0.2 @@ -867,7 +864,7 @@ importers: version: 0.0.2 ts-jest: specifier: ^29.1.5 - version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) + version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)))(typescript@5.5.3) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -985,7 +982,7 @@ importers: version: 7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@storybook/react-webpack5': specifier: ^7.3.2 - version: 7.4.6(@babel/core@7.16.12)(@swc/core@1.3.92)(@types/react-dom@17.0.8)(@types/react@17.0.21)(@types/webpack@4.41.39)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) + version: 7.4.6(@babel/core@7.16.12)(@swc/core@1.3.92)(@types/react-dom@17.0.8)(@types/react@17.0.21)(@types/webpack@4.41.39)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) '@types/jest': specifier: ^29.5.12 version: 29.5.12 @@ -1021,13 +1018,13 @@ importers: version: 6.2.0(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@20.14.2)(typescript@5.5.3)) + version: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)) jest-junit: specifier: ^16.0.0 version: 16.0.0 jest-when: specifier: ^3.6.0 - version: 3.6.0(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@20.14.2)(typescript@5.5.3))) + version: 3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3))) react-json-view: specifier: ^1.21.3 version: 1.21.3(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) @@ -1042,7 +1039,7 @@ importers: version: 7.4.6 ts-jest: specifier: ^29.1.5 - version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(esbuild@0.18.20)(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@20.14.2)(typescript@5.5.3)))(typescript@5.5.3) + version: 29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(esbuild@0.18.20)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -1555,8 +1552,8 @@ importers: specifier: ^2.8.5 version: 2.8.5 express: - specifier: ^4.21.0 - version: 4.21.0 + specifier: ^4.21.1 + version: 4.21.1 node-fetch: specifier: ^3.3.1 version: 3.3.1 @@ -3332,8 +3329,8 @@ importers: specifier: '>=17.0.2 <19.0.0' version: 17.0.2(react@17.0.2) react-error-boundary: - specifier: ^4.0.11 - version: 4.0.12(react@17.0.2) + specifier: ^4.0.13 + version: 4.0.13(react@17.0.2) reactflow: specifier: ^11.8.3 version: 11.10.1(@types/react@17.0.21)(immer@10.0.3(patch_hash=utu5oov26wz5mjuays57tp3ybu))(react-dom@17.0.2(react@17.0.2))(react@17.0.2) @@ -3400,7 +3397,7 @@ importers: version: 7.6.13(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@storybook/react-webpack5': specifier: ^7.3.2 - version: 7.6.13(@babel/core@7.23.0)(@swc/core@1.3.92)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) + version: 7.6.13(@babel/core@7.23.0)(@swc/core@1.3.92)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) '@types/d3-drag': specifier: ^3.0.3 version: 3.0.7 @@ -3659,7 +3656,7 @@ importers: version: 7.6.13(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@storybook/react-webpack5': specifier: ^7.3.2 - version: 7.6.13(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) + version: 7.6.13(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) '@types/jest-when': specifier: ^3.5.5 version: 3.5.5 @@ -5986,8 +5983,8 @@ importers: specifier: ^5.5.3 version: 5.5.3 vscode-extension-tester: - specifier: ^8.3.1 - version: 8.3.1(mocha@10.6.0)(typescript@5.5.3) + specifier: ^8.8.0 + version: 8.8.0(mocha@10.6.0)(typescript@5.5.3) webpack: specifier: ^5.94.0 version: 5.94.0(webpack-cli@4.10.0) @@ -6402,6 +6399,9 @@ importers: packages/kogito-data-index-ephemeral-image: devDependencies: + '@kie-tools/maven-base': + specifier: workspace:* + version: link:../maven-base '@kie-tools/python-venv': specifier: workspace:* version: link:../python-venv @@ -6426,6 +6426,9 @@ importers: packages/kogito-data-index-postgresql-image: devDependencies: + '@kie-tools/maven-base': + specifier: workspace:* + version: link:../maven-base '@kie-tools/python-venv': specifier: workspace:* version: link:../python-venv @@ -6450,6 +6453,9 @@ importers: packages/kogito-jit-runner-image: devDependencies: + '@kie-tools/maven-base': + specifier: workspace:* + version: link:../maven-base '@kie-tools/python-venv': specifier: workspace:* version: link:../python-venv @@ -6474,6 +6480,9 @@ importers: packages/kogito-jobs-service-allinone-image: devDependencies: + '@kie-tools/maven-base': + specifier: workspace:* + version: link:../maven-base '@kie-tools/python-venv': specifier: workspace:* version: link:../python-venv @@ -6498,6 +6507,9 @@ importers: packages/kogito-jobs-service-ephemeral-image: devDependencies: + '@kie-tools/maven-base': + specifier: workspace:* + version: link:../maven-base '@kie-tools/python-venv': specifier: workspace:* version: link:../python-venv @@ -6522,6 +6534,9 @@ importers: packages/kogito-jobs-service-postgresql-image: devDependencies: + '@kie-tools/maven-base': + specifier: workspace:* + version: link:../maven-base '@kie-tools/python-venv': specifier: workspace:* version: link:../python-venv @@ -6568,30 +6583,6 @@ importers: specifier: ^1.1.2 version: 1.1.2 - packages/kogito-task-console: - devDependencies: - '@kie-tools/image-builder': - specifier: workspace:* - version: link:../image-builder - '@kie-tools/image-env-to-json': - specifier: workspace:* - version: link:../image-env-to-json - '@kie-tools/root-env': - specifier: workspace:* - version: link:../root-env - '@kie-tools/runtime-tools-task-console-webapp': - specifier: workspace:* - version: link:../runtime-tools-task-console-webapp - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - run-script-os: - specifier: ^1.1.6 - version: 1.1.6 - ts-json-schema-generator: - specifier: ^1.1.2 - version: 1.1.2 - packages/kubernetes-bridge: dependencies: '@kie-tools/cors-proxy-api': @@ -6644,8 +6635,6 @@ importers: specifier: ^1.1.6 version: 1.1.6 - packages/maven-config-setup-helper: {} - packages/maven-m2-repo-via-http-image: devDependencies: '@kie-tools/image-builder': @@ -7624,9 +7613,6 @@ importers: '@kie-tools/kogito-management-console': specifier: workspace:* version: link:../kogito-management-console - '@kie-tools/kogito-task-console': - specifier: workspace:* - version: link:../kogito-task-console devDependencies: '@kie-tools/root-env': specifier: workspace:* @@ -7740,6 +7726,12 @@ importers: '@graphql-codegen/typescript-react-apollo': specifier: ^3.3.7 version: 3.3.7(encoding@0.1.13)(graphql-tag@2.12.6(graphql@14.3.1))(graphql@14.3.1) + '@kie-tools-core/envelope': + specifier: workspace:* + version: link:../envelope + '@kie-tools-core/envelope-bus': + specifier: workspace:* + version: link:../envelope-bus '@kie-tools-core/webpack-base': specifier: workspace:* version: link:../webpack-base @@ -7766,7 +7758,7 @@ importers: version: 5.3.3 apollo-server-express: specifier: ^3.13.0 - version: 3.13.0(encoding@0.1.13)(express@4.21.0)(graphql@14.3.1) + version: 3.13.0(encoding@0.1.13)(express@4.21.1)(graphql@14.3.1) body-parser: specifier: ^1.20.3 version: 1.20.3 @@ -7789,8 +7781,8 @@ importers: specifier: ^5.0.1 version: 5.0.1(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) express: - specifier: ^4.21.0 - version: 4.21.0 + specifier: ^4.21.1 + version: 4.21.1 file-loader: specifier: ^6.2.0 version: 6.2.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) @@ -8031,7 +8023,7 @@ importers: version: 8.3.0 apollo-server-express: specifier: ^3.13.0 - version: 3.13.0(encoding@0.1.13)(express@4.21.0)(graphql@14.3.1) + version: 3.13.0(encoding@0.1.13)(express@4.21.1)(graphql@14.3.1) body-parser: specifier: ^1.20.3 version: 1.20.3 @@ -8054,8 +8046,8 @@ importers: specifier: ^5.0.1 version: 5.0.1(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) express: - specifier: ^4.21.0 - version: 4.21.0 + specifier: ^4.21.1 + version: 4.21.1 file-loader: specifier: ^6.2.0 version: 6.2.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) @@ -8112,7 +8104,7 @@ importers: version: 8.0.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) swagger-ui-express: specifier: ^5.0.0 - version: 5.0.0(express@4.21.0) + version: 5.0.0(express@4.21.1) ts-loader: specifier: ^9.4.2 version: 9.4.2(typescript@5.5.3)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) @@ -9067,229 +9059,6 @@ importers: specifier: ^5.5.3 version: 5.5.3 - packages/runtime-tools-task-console-webapp: - dependencies: - '@kie-tools-core/envelope': - specifier: workspace:* - version: link:../envelope - '@kie-tools-core/envelope-bus': - specifier: workspace:* - version: link:../envelope-bus - '@kie-tools-core/react-hooks': - specifier: workspace:* - version: link:../react-hooks - '@kie-tools/runtime-tools-components': - specifier: workspace:* - version: link:../runtime-tools-components - '@kie-tools/runtime-tools-process-enveloped-components': - specifier: workspace:* - version: link:../runtime-tools-process-enveloped-components - '@kie-tools/runtime-tools-process-gateway-api': - specifier: workspace:* - version: link:../runtime-tools-process-gateway-api - '@kie-tools/runtime-tools-process-webapp-components': - specifier: workspace:* - version: link:../runtime-tools-process-webapp-components - '@kie-tools/runtime-tools-shared-enveloped-components': - specifier: workspace:* - version: link:../runtime-tools-shared-enveloped-components - '@kie-tools/runtime-tools-shared-gateway-api': - specifier: workspace:* - version: link:../runtime-tools-shared-gateway-api - '@kie-tools/runtime-tools-shared-webapp-components': - specifier: workspace:* - version: link:../runtime-tools-shared-webapp-components - '@patternfly/patternfly': - specifier: ^4.224.2 - version: 4.224.2 - '@patternfly/react-core': - specifier: ^4.276.6 - version: 4.276.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@patternfly/react-icons': - specifier: ^4.93.6 - version: 4.93.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - apollo-cache-inmemory: - specifier: 1.6.6 - version: 1.6.6(graphql@14.3.1) - apollo-client: - specifier: 2.6.10 - version: 2.6.10(graphql@14.3.1) - apollo-link-context: - specifier: ^1.0.20 - version: 1.0.20(graphql@14.3.1) - apollo-link-error: - specifier: 1.1.13 - version: 1.1.13(graphql@14.3.1) - apollo-link-http: - specifier: 1.5.17 - version: 1.5.17(graphql@14.3.1) - axios: - specifier: ^1.7.4 - version: 1.7.4 - graphql: - specifier: 14.3.1 - version: 14.3.1 - history: - specifier: ^4.9.0 - version: 4.10.1 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - moment: - specifier: ^2.29.4 - version: 2.29.4 - react: - specifier: ^17.0.2 - version: 17.0.2 - react-dom: - specifier: ^17.0.2 - version: 17.0.2(react@17.0.2) - react-router: - specifier: ^5.3.4 - version: 5.3.4(react@17.0.2) - react-router-dom: - specifier: ^5.3.4 - version: 5.3.4(react@17.0.2) - devDependencies: - '@babel/core': - specifier: ^7.16.0 - version: 7.23.9 - '@babel/preset-env': - specifier: ^7.16.0 - version: 7.23.9(@babel/core@7.23.9) - '@babel/preset-react': - specifier: ^7.16.0 - version: 7.22.15(@babel/core@7.23.9) - '@graphql-codegen/add': - specifier: ^3.2.3 - version: 3.2.3(graphql@14.3.1) - '@graphql-codegen/cli': - specifier: ^2.16.5 - version: 2.16.5(@babel/core@7.23.9)(@swc/core@1.3.92)(@types/node@22.5.2)(encoding@0.1.13)(enquirer@2.4.1)(graphql@14.3.1)(typescript@5.5.3) - '@graphql-codegen/introspection': - specifier: ^2.2.3 - version: 2.2.3(encoding@0.1.13)(graphql@14.3.1) - '@graphql-codegen/typescript': - specifier: ^2.8.8 - version: 2.8.8(encoding@0.1.13)(graphql@14.3.1) - '@graphql-codegen/typescript-operations': - specifier: ^2.5.13 - version: 2.5.13(encoding@0.1.13)(graphql@14.3.1) - '@graphql-codegen/typescript-react-apollo': - specifier: ^3.3.7 - version: 3.3.7(encoding@0.1.13)(graphql-tag@2.12.6(graphql@14.3.1))(graphql@14.3.1) - '@kie-tools-core/webpack-base': - specifier: workspace:* - version: link:../webpack-base - '@kie-tools/eslint': - specifier: workspace:* - version: link:../eslint - '@kie-tools/root-env': - specifier: workspace:* - version: link:../root-env - '@kie-tools/tsconfig': - specifier: workspace:* - version: link:../tsconfig - '@types/react': - specifier: ^17.0.6 - version: 17.0.21 - '@types/react-dom': - specifier: ^17.0.5 - version: 17.0.8 - '@types/react-router': - specifier: ^5.1.20 - version: 5.1.20 - '@types/react-router-dom': - specifier: ^5.3.3 - version: 5.3.3 - apollo-server-express: - specifier: ^3.13.0 - version: 3.13.0(encoding@0.1.13)(express@4.21.0)(graphql@14.3.1) - concurrently: - specifier: ^8.2.2 - version: 8.2.2 - copy-webpack-plugin: - specifier: ^11.0.0 - version: 11.0.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) - cors: - specifier: ^2.8.5 - version: 2.8.5 - css-loader: - specifier: ^5.2.6 - version: 5.2.7(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) - css-minimizer-webpack-plugin: - specifier: ^5.0.1 - version: 5.0.1(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) - express: - specifier: ^4.21.0 - version: 4.21.0 - file-loader: - specifier: ^6.2.0 - version: 6.2.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) - html-webpack-plugin: - specifier: ^5.3.2 - version: 5.5.3(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) - https-browserify: - specifier: ^1.0.0 - version: 1.0.0 - identity-obj-proxy: - specifier: ^3.0.0 - version: 3.0.0 - mini-css-extract-plugin: - specifier: ^2.7.6 - version: 2.8.1(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) - nodemon: - specifier: ^3.1.4 - version: 3.1.4 - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - sass-loader: - specifier: ^12.3.0 - version: 12.4.0(sass@1.77.6)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) - stream-http: - specifier: ^3.2.0 - version: 3.2.0 - style-loader: - specifier: ^2.0.0 - version: 2.0.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) - svg-url-loader: - specifier: ^8.0.0 - version: 8.0.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) - ts-loader: - specifier: ^9.4.2 - version: 9.4.2(typescript@5.5.3)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) - tsconfig-paths-webpack-plugin: - specifier: ^3.5.2 - version: 3.5.2 - typescript: - specifier: ^5.5.3 - version: 5.5.3 - url: - specifier: ^0.11.3 - version: 0.11.3 - url-loader: - specifier: ^4.1.1 - version: 4.1.1(file-loader@6.2.0(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)))(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)) - uuid: - specifier: ^8.3.2 - version: 8.3.2 - waait: - specifier: ^1.0.5 - version: 1.0.5 - webpack: - specifier: ^5.94.0 - version: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0) - webpack-cli: - specifier: ^4.10.0 - version: 4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0) - webpack-dev-server: - specifier: ^4.15.1 - version: 4.15.1(webpack-cli@4.10.0)(webpack@5.94.0) - webpack-merge: - specifier: ^5.9.0 - version: 5.9.0 - packages/scesim-editor: dependencies: '@kie-tools-core/i18n': @@ -9301,6 +9070,9 @@ importers: '@kie-tools/boxed-expression-component': specifier: workspace:* version: link:../boxed-expression-component + '@kie-tools/dmn-marshaller': + specifier: workspace:* + version: link:../dmn-marshaller '@kie-tools/i18n-common-dictionary': specifier: workspace:* version: link:../i18n-common-dictionary @@ -9316,6 +9088,9 @@ importers: '@patternfly/react-styles': specifier: ^4.92.6 version: 4.92.6 + immer: + specifier: ^10.0.3 + version: 10.0.3(patch_hash=utu5oov26wz5mjuays57tp3ybu) lodash: specifier: ^4.17.21 version: 4.17.21 @@ -9331,6 +9106,9 @@ importers: uuid: specifier: ^8.3.2 version: 8.3.2 + zustand: + specifier: ^4.4.2 + version: 4.4.2(patch_hash=7tws22nsyaxzkdpquvgytzpdve)(@types/react@17.0.21)(immer@10.0.3(patch_hash=utu5oov26wz5mjuays57tp3ybu))(react@17.0.2) devDependencies: '@babel/core': specifier: ^7.16.0 @@ -9379,7 +9157,7 @@ importers: version: 7.6.13(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@storybook/react-webpack5': specifier: ^7.3.2 - version: 7.6.13(@babel/core@7.18.10)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) + version: 7.6.13(@babel/core@7.18.10)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) '@types/lodash': specifier: ^4.14.168 version: 4.14.169 @@ -9404,9 +9182,15 @@ importers: cross-env: specifier: ^7.0.3 version: 7.0.3 + deep-object-diff: + specifier: ^1.1.9 + version: 1.1.9 file-loader: specifier: ^6.2.0 version: 6.2.0(webpack@5.94.0(webpack-cli@4.10.0)) + react-error-boundary: + specifier: ^4.0.13 + version: 4.0.13(react@17.0.2) rimraf: specifier: ^3.0.2 version: 3.0.2 @@ -9432,6 +9216,85 @@ importers: specifier: ^5.9.0 version: 5.9.0 + packages/scesim-editor-envelope: + dependencies: + '@kie-tools-core/editor': + specifier: workspace:* + version: link:../editor + '@kie-tools-core/envelope': + specifier: workspace:* + version: link:../envelope + '@kie-tools-core/envelope-bus': + specifier: workspace:* + version: link:../envelope-bus + '@kie-tools-core/keyboard-shortcuts': + specifier: workspace:* + version: link:../keyboard-shortcuts + '@kie-tools-core/notifications': + specifier: workspace:* + version: link:../notifications + '@kie-tools-core/react-hooks': + specifier: workspace:* + version: link:../react-hooks + '@kie-tools-core/workspace': + specifier: workspace:* + version: link:../workspace + '@kie-tools/boxed-expression-component': + specifier: workspace:* + version: link:../boxed-expression-component + '@kie-tools/dmn-marshaller': + specifier: workspace:* + version: link:../dmn-marshaller + '@kie-tools/scesim-editor': + specifier: workspace:* + version: link:../scesim-editor + '@kie-tools/scesim-marshaller': + specifier: workspace:* + version: link:../scesim-marshaller + '@kie-tools/xml-parser-ts': + specifier: workspace:* + version: link:../xml-parser-ts + '@patternfly/react-core': + specifier: ^4.276.6 + version: 4.276.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react: + specifier: '>=17.0.2 <19.0.0' + version: 17.0.2 + react-dom: + specifier: '>=17.0.2 <19.0.0' + version: 17.0.2(react@17.0.2) + devDependencies: + '@babel/core': + specifier: ^7.16.0 + version: 7.24.9 + '@babel/preset-env': + specifier: ^7.16.0 + version: 7.24.7(@babel/core@7.24.9) + '@babel/preset-react': + specifier: ^7.16.0 + version: 7.22.15(@babel/core@7.24.9) + '@kie-tools/eslint': + specifier: workspace:* + version: link:../eslint + '@kie-tools/root-env': + specifier: workspace:* + version: link:../root-env + '@kie-tools/tsconfig': + specifier: workspace:* + version: link:../tsconfig + '@types/react': + specifier: ^17.0.6 + version: 17.0.21 + '@types/react-dom': + specifier: ^17.0.5 + version: 17.0.8 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + typescript: + specifier: ^5.5.3 + version: 5.5.3 + packages/scesim-marshaller: dependencies: '@kie-tools/xml-parser-ts': @@ -11100,8 +10963,8 @@ importers: specifier: ^5.5.3 version: 5.5.3 vscode-extension-tester: - specifier: ^8.3.1 - version: 8.3.1(mocha@10.6.0)(typescript@5.5.3) + specifier: ^8.8.0 + version: 8.8.0(mocha@10.6.0)(typescript@5.5.3) webpack: specifier: ^5.94.0 version: 5.94.0(webpack-cli@4.10.0) @@ -11333,7 +11196,7 @@ importers: version: link:../root-env apollo-server-express: specifier: ^3.13.0 - version: 3.13.0(encoding@0.1.13)(express@4.21.0)(graphql@14.3.1) + version: 3.13.0(encoding@0.1.13)(express@4.21.1)(graphql@14.3.1) babel-jest: specifier: ^25.5.1 version: 25.5.1(@babel/core@7.24.9) @@ -11344,11 +11207,11 @@ importers: specifier: ^2.8.5 version: 2.8.5 express: - specifier: ^4.21.0 - version: 4.21.0 + specifier: ^4.21.1 + version: 4.21.1 express-rate-limit: specifier: ^7.4.0 - version: 7.4.0(express@4.21.0) + version: 7.4.0(express@4.21.1) graphql: specifier: 14.3.1 version: 14.3.1 @@ -11363,7 +11226,7 @@ importers: version: 3.1.4 swagger-ui-express: specifier: ^5.0.0 - version: 5.0.0(express@4.21.0) + version: 5.0.0(express@4.21.1) uuid: specifier: ^8.3.2 version: 8.3.2 @@ -11836,7 +11699,7 @@ importers: version: 3.0.3(webpack@5.94.0(esbuild@0.18.20)) '@storybook/react-webpack5': specifier: ^7.3.2 - version: 7.4.6(@babel/core@7.23.9)(@types/react-dom@17.0.8)(@types/react@17.0.21)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-hot-middleware@2.25.4) + version: 7.4.6(@babel/core@7.23.9)(@types/react-dom@17.0.8)(@types/react@17.0.21)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-hot-middleware@2.25.4) '@storybook/theming': specifier: ^7.3.2 version: 7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) @@ -12519,8 +12382,8 @@ importers: specifier: ^5.5.3 version: 5.5.3 vscode-extension-tester: - specifier: ^8.3.1 - version: 8.3.1(mocha@10.6.0)(typescript@5.5.3) + specifier: ^8.8.0 + version: 8.8.0(mocha@10.6.0)(typescript@5.5.3) packages/vscode-extension-dashbuilder-editor: dependencies: @@ -12643,8 +12506,8 @@ importers: specifier: ^5.5.3 version: 5.5.3 vscode-extension-tester: - specifier: ^8.3.1 - version: 8.3.1(mocha@10.6.0)(typescript@5.5.3) + specifier: ^8.8.0 + version: 8.8.0(mocha@10.6.0)(typescript@5.5.3) webpack: specifier: ^5.94.0 version: 5.94.0(webpack-cli@4.10.0) @@ -13503,8 +13366,8 @@ importers: specifier: ^5.5.3 version: 5.5.3 vscode-extension-tester: - specifier: ^8.3.1 - version: 8.3.1(mocha@10.6.0)(typescript@5.5.3) + specifier: ^8.8.0 + version: 8.8.0(mocha@10.6.0)(typescript@5.5.3) webpack: specifier: ^5.94.0 version: 5.94.0(webpack-cli@4.10.0) @@ -14501,6 +14364,7 @@ packages: '@babel/plugin-proposal-async-generator-functions@7.16.8': resolution: {integrity: sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. peerDependencies: '@babel/core': ^7.0.0-0 @@ -14514,6 +14378,7 @@ packages: '@babel/plugin-proposal-class-properties@7.16.7': resolution: {integrity: sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 @@ -14527,6 +14392,7 @@ packages: '@babel/plugin-proposal-class-static-block@7.17.6': resolution: {integrity: sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-static-block instead. peerDependencies: '@babel/core': ^7.12.0 @@ -14540,6 +14406,7 @@ packages: '@babel/plugin-proposal-dynamic-import@7.16.7': resolution: {integrity: sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-dynamic-import instead. peerDependencies: '@babel/core': ^7.0.0-0 @@ -14553,6 +14420,7 @@ packages: '@babel/plugin-proposal-export-namespace-from@7.16.7': resolution: {integrity: sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead. peerDependencies: '@babel/core': ^7.0.0-0 @@ -14566,6 +14434,7 @@ packages: '@babel/plugin-proposal-json-strings@7.16.7': resolution: {integrity: sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-json-strings instead. peerDependencies: '@babel/core': ^7.0.0-0 @@ -14579,6 +14448,7 @@ packages: '@babel/plugin-proposal-logical-assignment-operators@7.16.7': resolution: {integrity: sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. peerDependencies: '@babel/core': ^7.0.0-0 @@ -14592,30 +14462,35 @@ packages: '@babel/plugin-proposal-nullish-coalescing-operator@7.16.7': resolution: {integrity: sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-proposal-numeric-separator@7.16.7': resolution: {integrity: sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-proposal-numeric-separator@7.18.6': resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-proposal-object-rest-spread@7.17.3': resolution: {integrity: sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. peerDependencies: '@babel/core': ^7.0.0-0 @@ -14629,6 +14504,7 @@ packages: '@babel/plugin-proposal-optional-catch-binding@7.16.7': resolution: {integrity: sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. peerDependencies: '@babel/core': ^7.0.0-0 @@ -14642,6 +14518,7 @@ packages: '@babel/plugin-proposal-optional-chaining@7.16.7': resolution: {integrity: sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 @@ -14655,6 +14532,7 @@ packages: '@babel/plugin-proposal-private-methods@7.16.11': resolution: {integrity: sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. peerDependencies: '@babel/core': ^7.0.0-0 @@ -14668,6 +14546,7 @@ packages: '@babel/plugin-proposal-private-property-in-object@7.16.7': resolution: {integrity: sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. peerDependencies: '@babel/core': ^7.0.0-0 @@ -14687,6 +14566,7 @@ packages: '@babel/plugin-proposal-unicode-property-regex@7.16.7': resolution: {integrity: sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==} engines: {node: '>=4'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead. peerDependencies: '@babel/core': ^7.0.0-0 @@ -16316,6 +16196,9 @@ packages: '@base2/pretty-print-object@1.0.1': resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} + '@bazel/runfiles@5.8.1': + resolution: {integrity: sha512-NDdfpdQ6rZlylgv++iMn5FkObC/QlBQvipinGLSOguTYpRywmieOyJ29XHvUilspwTFSILWpoE9CqMGkHXug1g==} + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -16937,6 +16820,7 @@ packages: '@humanwhocodes/config-array@0.11.13': resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} @@ -16948,6 +16832,7 @@ packages: '@humanwhocodes/object-schema@2.0.1': resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + deprecated: Use @eslint/object-schema instead '@inquirer/checkbox@2.4.5': resolution: {integrity: sha512-+YlCyS6JBWeZugIvReh/YL5HJcowlklz5RykQuYKQfgWQeCJh5Us0nWcRddvIVkjmYa0I/8bwWioSLu850J8sA==} @@ -17179,6 +17064,7 @@ packages: '@koa/router@10.1.1': resolution: {integrity: sha512-ORNjq5z4EmQPriKbR0ER3k4Gh7YGNhWDL7JBW+8wXDrHLbWYKYSJaOJ9aN06npF5tbTxe2JBOsurpJDAvjiXKw==} engines: {node: '>= 8.0.0'} + deprecated: '**IMPORTANT 10x+ PERFORMANCE UPGRADE**: Please upgrade to v12.0.1+ as we have fixed an issue with debuglog causing 10x slower router benchmark performance, see https://github.com/koajs/router/pull/173' '@kubernetes-models/apimachinery@1.1.0': resolution: {integrity: sha512-DvCNeou3+M5ESJluVs8daVp7g03/hWnwXHou9Se8qNRZpqH6lQHvRjXy6HWSqBV9fKZOnWcOExmkUPQGbVIa6A==} @@ -17342,6 +17228,7 @@ packages: '@npmcli/move-file@1.1.2': resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} engines: {node: '>=10'} + deprecated: This functionality has been moved to @npmcli/fs '@npmcli/node-gyp@3.0.0': resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} @@ -18241,14 +18128,14 @@ packages: peerDependencies: openapi-types: '>=7' - '@redhat-developer/locators@1.1.3': - resolution: {integrity: sha512-wO+qoL7daG40vJkzX400YcvxFLOInxmfgbViCiUtj42ihwEr/k2aBKNDOxsJqq2kzQ5HWkxFJqmxQx80aYnaQg==} + '@redhat-developer/locators@1.6.0': + resolution: {integrity: sha512-MdV7Rhh1/9J44tuwGsqYsSvP9Dk9Dgrs1g4yQpdJRRFm6pa0m8ntnKdBG8bpVxmmTCgWe+/nsdJtKXynPBaPrA==} peerDependencies: '@redhat-developer/page-objects': '>=1.0.0' selenium-webdriver: '>=4.6.1' - '@redhat-developer/page-objects@1.1.3': - resolution: {integrity: sha512-oqntfrz02Gv4PbBBYPqkW00OHYCAM3AbHx67sFPeO2DaQO5SzaRwiS1CJ97jUGNiALjsaw0SgFpjRpHoOYwyRA==} + '@redhat-developer/page-objects@1.6.0': + resolution: {integrity: sha512-BD8cXANSWbYN82VDhJQVckGWiNAgs3F4YKdFnDxDa7FLSWydkDnaQ6EfNG+sVGhhDR89RtQpFBOhxSNp726EHA==} peerDependencies: selenium-webdriver: '>=4.6.1' typescript: '>=4.6.2' @@ -19436,9 +19323,6 @@ packages: '@types/http-proxy@1.17.14': resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} - '@types/inquirer@7.3.3': - resolution: {integrity: sha512-HhxyLejTHMfohAuhRun4csWigAMjXTmRyiJTU1Y/I1xmggikFMkOUoMQRlFm+zQcPEGHSs3io/0FAmNZf8EymQ==} - '@types/invariant@2.2.35': resolution: {integrity: sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg==} @@ -19649,8 +19533,8 @@ packages: '@types/selenium-webdriver@4.1.20': resolution: {integrity: sha512-WxzARWDZVTbXlJgwYGhNoiV4OuHDabctSQmK5V88LqjW9TJiLETcknxRZ2xB1toecQnu0T2jt1pPXnSYkaWYiw==} - '@types/selenium-webdriver@4.1.24': - resolution: {integrity: sha512-oR5MVATv+P2dmhceZJPDm99MmOC9yAK8YpIgJbHEFQ/MbSPC1lA6Ohw441WNUcQ6B1fMAOMu0u59fRKKj9AGGg==} + '@types/selenium-webdriver@4.1.26': + resolution: {integrity: sha512-PUgqsyNffal0eAU0bzGlh37MJo558aporAPZoKqBeB/pF7zhKl1S3zqza0GpwFqgoigNxWhEIJzru75eeYco/w==} '@types/semver@6.2.3': resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} @@ -19709,9 +19593,6 @@ packages: '@types/testing-library__jest-dom@5.14.9': resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==} - '@types/through@0.0.30': - resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==} - '@types/tough-cookie@4.0.2': resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} @@ -19903,9 +19784,9 @@ packages: engines: {node: '>= 14'} hasBin: true - '@vscode/vsce@2.29.0': - resolution: {integrity: sha512-63+aEO8SpjE6qKiIh2Cqy/P9zC7+USElGwpEdkyPp89xIBDBr5IqeNS3zkD3mp3wZqbvHIpJsCCNu74WQirYCg==} - engines: {node: '>= 16'} + '@vscode/vsce@3.1.1': + resolution: {integrity: sha512-N62Ca9ElRPLUUzf7l9CeEBlLrYzFPRQq7huKk4pVW+LjIOSXfFIPudixn5QvZcz+yXDOh15IopI3K2o3y9666Q==} + engines: {node: '>= 20'} hasBin: true '@webassemblyjs/ast@1.12.1': @@ -20137,6 +20018,7 @@ packages: abab@2.0.5: resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==} + deprecated: Use your platform's native atob() and btoa() methods instead abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} @@ -20464,6 +20346,7 @@ packages: are-we-there-yet@2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} engines: {node: '>=10'} + deprecated: This package is no longer supported. arg@2.0.0: resolution: {integrity: sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w==} @@ -21524,8 +21407,8 @@ packages: commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - compare-versions@6.1.0: - resolution: {integrity: sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==} + compare-versions@6.1.1: + resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} component-emitter@1.3.0: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} @@ -21618,6 +21501,10 @@ packages: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + cookiejar@2.1.4: resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} @@ -22528,6 +22415,9 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} @@ -23008,6 +22898,7 @@ packages: eslint@8.52.0: resolution: {integrity: sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true espree@9.6.1: @@ -23133,8 +23024,8 @@ packages: resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} engines: {node: '>= 0.10.0'} - express@4.21.0: - resolution: {integrity: sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==} + express@4.21.1: + resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} engines: {node: '>= 0.10.0'} extend-shallow@2.0.1: @@ -23313,7 +23204,7 @@ packages: webpack: ^5.0.0 filename-reserved-regex@2.0.0: - resolution: {integrity: sha1-q/c9+rc10EVECr/qLZHzieu/oik=} + resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} engines: {node: '>=4'} filenamify@4.3.0: @@ -23563,6 +23454,7 @@ packages: gauge@4.0.0: resolution: {integrity: sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw==} engines: {node: ^12.13.0 || ^14.15.0 || >=16} + deprecated: This package is no longer supported. gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} @@ -23677,8 +23569,14 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true + glob@11.0.0: + resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + engines: {node: 20 || >=22} + hasBin: true + glob@7.2.0: resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + deprecated: Glob versions prior to v9 are no longer supported glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} @@ -23893,7 +23791,7 @@ packages: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} heatmap.js@2.0.5: - resolution: {integrity: sha1-Rm07hlE/XUkRKknSVwCrJzAUkVM=} + resolution: {integrity: sha512-CG2gYFP5Cv9IQCXEg3ZRxnJDyAilhWnQlAuHYGuWVzv6mFtQelS1bR9iN80IyDmFECbFPbg6I0LR5uAFHgCthw==} hexoid@1.0.0: resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} @@ -24213,10 +24111,6 @@ packages: resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - inquirer@8.2.0: - resolution: {integrity: sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==} - engines: {node: '>=8.0.0'} - inquirer@8.2.4: resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} engines: {node: '>=12.0.0'} @@ -24680,6 +24574,10 @@ packages: resolution: {integrity: sha512-qH3nOSj8q/8+Eg8LUPOq3C+6HWkpUioIjDsq1+D4zY91oZvpPttw8GwtF1nReRYKXl+1AORyFqtm2f5Q1SB6/Q==} engines: {node: 14 >=14.21 || 16 >=16.20 || >=18} + jackspeak@4.0.2: + resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} + engines: {node: 20 || >=22} + jake@10.8.7: resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} engines: {node: '>=10'} @@ -25300,6 +25198,9 @@ packages: linkify-it@3.0.3: resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + listr2@3.14.0: resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} engines: {node: '>=10.0.0'} @@ -25493,6 +25394,10 @@ packages: resolution: {integrity: sha512-voV4dDrdVZVNz84n39LFKDaRzfwhdzJ7akpyXfTMxCgRUp07U3lcJUXRlhTKP17rgt09sUzLi5iCitpEAr+6ug==} engines: {node: 14 || 16 || 18 || 20 || >=22} + lru-cache@11.0.1: + resolution: {integrity: sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==} + engines: {node: 20 || >=22} + lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} @@ -25577,6 +25482,10 @@ packages: resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} hasBin: true + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + markdown-table@3.0.2: resolution: {integrity: sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==} @@ -25613,6 +25522,9 @@ packages: mdurl@1.0.1: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -25765,12 +25677,6 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - mini-css-extract-plugin@2.8.1: - resolution: {integrity: sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^5.0.0 - mini-css-extract-plugin@2.9.0: resolution: {integrity: sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==} engines: {node: '>= 12.13.0'} @@ -25783,6 +25689,10 @@ packages: minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + minimatch@3.0.4: resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} @@ -26252,6 +26162,7 @@ packages: npmlog@6.0.0: resolution: {integrity: sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q==} engines: {node: ^12.13.0 || ^14.15.0 || >=16} + deprecated: This package is no longer supported. nth-check@2.0.1: resolution: {integrity: sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==} @@ -26660,6 +26571,10 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + path-temp@2.0.0: resolution: {integrity: sha512-92olbatybjsHTGB2CUnAM7s0mU/27gcMfLNA7t09UftndUdxywlQKur3fzXEPpfLrgZD3I2Bt8+UmiL7YDEgXQ==} engines: {node: '>=8.15'} @@ -27237,6 +27152,10 @@ packages: pumpify@1.5.1: resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} @@ -27251,6 +27170,7 @@ packages: puppeteer@13.1.2: resolution: {integrity: sha512-ozVM8Tdg0patMtm/xAr3Uh7rQ28vBpbTHLP+ECmoAxG/s4PKrVLN764H/poLux7Ln77jHThOd8OBJj5mTuA6Iw==} engines: {node: '>=10.18.1'} + deprecated: < 22.8.2 is no longer supported pure-color@1.3.0: resolution: {integrity: sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==} @@ -27268,6 +27188,10 @@ packages: q@1.5.1: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + deprecated: |- + You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) qjobs@1.2.0: resolution: {integrity: sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==} @@ -27347,6 +27271,7 @@ packages: rdk@6.5.0: resolution: {integrity: sha512-Jrv4YFVH07JI03wxwsQhosypdyqOHirzNU0pfmteIfylhSpaIi8VnAp3MbznD3/ZKZyt6YRj0kMtQopTwIxMUw==} + deprecated: 'deprecated: use reablocks instead' peerDependencies: react: '>=16' react-dom: '>=16' @@ -27459,8 +27384,8 @@ packages: peerDependencies: react: '>=16.13.1' - react-error-boundary@4.0.12: - resolution: {integrity: sha512-kJdxdEYlb7CPC1A0SeUY38cHpjuu6UkvzKiAmqmOFL21VRfMhOcWxTCBgLVCO0VEMh9JhFNcVaXlV4/BTpiwOA==} + react-error-boundary@4.0.13: + resolution: {integrity: sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==} peerDependencies: react: '>=16.13.1' @@ -28039,6 +27964,7 @@ packages: right-pad@1.0.1: resolution: {integrity: sha512-bYBjgxmkvTAfgIYy328fmkwhp39v8lwVgWhhrzxPV3yHtcSqyYKe9/XOhvW48UFjATg3VuJbpsp5822ACNvkmw==} engines: {node: '>= 0.10'} + deprecated: Please use String.prototype.padEnd() over this package. rimraf@2.5.4: resolution: {integrity: sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ==} @@ -28052,6 +27978,7 @@ packages: rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rimraf@3.0.2: @@ -28105,10 +28032,6 @@ packages: resolution: {integrity: sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw==} hasBin: true - rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - rxjs@7.5.2: resolution: {integrity: sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==} @@ -28253,8 +28176,8 @@ packages: resolution: {integrity: sha512-BNG1bq+KWiBGHcJ/wULi0eKY0yaDqFIbEmtbsYJmfaEghdCkXBsx1akgOorhNwjBipOr0uwpvNXqT6/nzl+zjg==} engines: {node: '>= 14.20.0'} - selenium-webdriver@4.22.0: - resolution: {integrity: sha512-GNbrkCHmy249ai885wgXqTfqL2lZnclUH/P8pwTDIqzyFxU3YhDiN7p/c9tMFA4NhgRdEBO2QCG+CWmG7xr/Mw==} + selenium-webdriver@4.25.0: + resolution: {integrity: sha512-zl9IX93caOT8wbcCpZzAkEtYa+hNgJ4C5GUN8uhpzggqRLvsg1asfKi0p1uNZC8buYVvsBZbx8S+9MjVAjs4oA==} engines: {node: '>= 14.21.0'} selfsigned@2.4.1: @@ -28438,6 +28361,7 @@ packages: sinon@11.1.1: resolution: {integrity: sha512-ZSSmlkSyhUWbkF01Z9tEbxZLF/5tRC9eojCdFh33gtQaP7ITQVaMWQHGuFM7Cuf/KEfihuh1tTl3/ABju3AQMg==} + deprecated: 16.1.1 sirv@2.0.4: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} @@ -28872,7 +28796,7 @@ packages: superagent@7.1.6: resolution: {integrity: sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g==} engines: {node: '>=6.4.0 <13 || >=14'} - deprecated: Please downgrade to v7.1.5 if you need IE/ActiveXObject support OR upgrade to v8.0.0 as we no longer support IE and published an incorrect patch version (see https://github.com/visionmedia/superagent/issues/1731) + deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} @@ -29002,7 +28926,7 @@ packages: engines: {node: '>=0.8.0'} temp@0.4.0: - resolution: {integrity: sha1-ZxrWPVe+D+nXKUZks/xABjZnimA=} + resolution: {integrity: sha512-IsFisGgDKk7qzK9erMIkQe/XwiSUdac7z3wYOsjcLkhPBy3k1SlvLoIh2dAHIlEpgA971CgguMrx9z8fFg7tSA==} engines: {'0': node >=0.4.0} temp@0.8.4: @@ -29216,7 +29140,7 @@ packages: engines: {node: '>=0.6'} trim-repeated@1.0.0: - resolution: {integrity: sha1-42RqLqTokTEr9+rObPsFOAvAHCE=} + resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} engines: {node: '>=0.10.0'} truncate-utf8-bytes@1.0.2: @@ -29374,8 +29298,8 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@4.21.0: - resolution: {integrity: sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==} + type-fest@4.26.1: + resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} engines: {node: '>=16'} type-is@1.6.18: @@ -29441,6 +29365,9 @@ packages: uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + uglify-js@3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} @@ -29448,6 +29375,7 @@ packages: uid-number@0.0.6: resolution: {integrity: sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w==} + deprecated: This package is no longer supported. umask@1.1.0: resolution: {integrity: sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA==} @@ -29587,6 +29515,9 @@ packages: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} + unzipper@0.12.3: + resolution: {integrity: sha512-PZ8hTS+AqcGxsaQntl3IRBw65QrBI6lxzqDEL7IAo/XCEqRTKGfOX56Vea5TH9SZczRVxuzk1re04z/YjuYCJA==} + update-browserslist-db@1.0.13: resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true @@ -29914,8 +29845,8 @@ packages: resolution: {integrity: sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==} engines: {node: '>=0.10.0'} - vscode-extension-tester@8.3.1: - resolution: {integrity: sha512-SJfCwBHJhC37tFxAlssdlCyrC6iEe1tqMn0oWFU4Wuc12sgHWAf6Sdj0dsDMifBZKkua7HYX4OrirJ1kbsBtCw==} + vscode-extension-tester@8.8.0: + resolution: {integrity: sha512-P8tY/pPJMU5WbVEBuIabmD5wTpULLH3Nr3upSAIHPXHj+WRYZnvB3/nCN5FCmE85o8uhyFlRMjdhe4hmrHTX7w==} hasBin: true peerDependencies: mocha: '>=5.2.0' @@ -30525,7 +30456,7 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.1801.3(chokidar@3.6.0) - '@angular-devkit/build-webpack': 0.1801.3(chokidar@3.6.0)(webpack-dev-server@5.0.4(webpack@5.94.0))(webpack@5.92.1(esbuild@0.21.5)) + '@angular-devkit/build-webpack': 0.1801.3(chokidar@3.6.0)(webpack-dev-server@5.0.4(webpack@5.92.1(esbuild@0.21.5)))(webpack@5.92.1(esbuild@0.21.5)) '@angular-devkit/core': 18.1.3(chokidar@3.6.0) '@angular/build': 18.1.3(@angular/compiler-cli@18.1.3(@angular/compiler@18.1.3(@angular/core@18.1.3(rxjs@7.5.2)(zone.js@0.14.8)))(typescript@5.5.3))(@types/node@22.5.2)(chokidar@3.6.0)(less@4.2.0)(postcss@8.4.38)(stylus@0.59.0)(terser@5.29.2)(typescript@5.5.3) '@angular/compiler-cli': 18.1.3(@angular/compiler@18.1.3(@angular/core@18.1.3(rxjs@7.5.2)(zone.js@0.14.8)))(typescript@5.5.3) @@ -30611,7 +30542,7 @@ snapshots: - utf-8-validate - webpack-cli - '@angular-devkit/build-webpack@0.1801.3(chokidar@3.6.0)(webpack-dev-server@5.0.4(webpack@5.94.0))(webpack@5.92.1(esbuild@0.21.5))': + '@angular-devkit/build-webpack@0.1801.3(chokidar@3.6.0)(webpack-dev-server@5.0.4(webpack@5.92.1(esbuild@0.21.5)))(webpack@5.92.1(esbuild@0.21.5))': dependencies: '@angular-devkit/architect': 0.1801.3(chokidar@3.6.0) rxjs: 7.8.1 @@ -31007,7 +30938,7 @@ snapshots: '@babel/core': 7.24.9 '@babel/generator': 7.23.6 '@babel/parser': 7.23.9 - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@babel/traverse': 7.23.9 '@babel/types': 7.23.9 babel-preset-fbjs: 3.4.0(@babel/core@7.24.9) @@ -31038,17 +30969,17 @@ snapshots: '@azure/abort-controller@1.1.0': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@azure/abort-controller@2.1.2': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@azure/core-auth@1.7.2': dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-util': 1.9.0 - tslib: 2.6.2 + tslib: 2.7.0 '@azure/core-client@1.9.2': dependencies: @@ -31058,7 +30989,7 @@ snapshots: '@azure/core-tracing': 1.1.2 '@azure/core-util': 1.9.0 '@azure/logger': 1.1.2 - tslib: 2.6.2 + tslib: 2.7.0 transitivePeerDependencies: - supports-color @@ -31070,19 +31001,19 @@ snapshots: '@azure/core-util': 1.9.0 '@azure/logger': 1.1.2 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.2 - tslib: 2.6.2 + https-proxy-agent: 7.0.5 + tslib: 2.7.0 transitivePeerDependencies: - supports-color '@azure/core-tracing@1.1.2': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@azure/core-util@1.9.0': dependencies: '@azure/abort-controller': 2.1.2 - tslib: 2.6.2 + tslib: 2.7.0 '@azure/identity@4.3.0': dependencies: @@ -31099,13 +31030,13 @@ snapshots: jws: 4.0.0 open: 8.4.0 stoppable: 1.1.0 - tslib: 2.6.2 + tslib: 2.7.0 transitivePeerDependencies: - supports-color '@azure/logger@1.1.2': dependencies: - tslib: 2.6.2 + tslib: 2.7.0 '@azure/msal-browser@3.18.0': dependencies: @@ -36609,7 +36540,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.9 '@babel/types': 7.23.9 - debug: 4.3.5 + debug: 4.3.6 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -36678,6 +36609,8 @@ snapshots: '@base2/pretty-print-object@1.0.1': {} + '@bazel/runfiles@5.8.1': {} + '@bcoe/v8-coverage@0.2.3': {} '@chevrotain/types@9.1.0': {} @@ -37826,41 +37759,6 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.14.2 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.3.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.5 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 @@ -37925,6 +37823,7 @@ snapshots: v8-to-istanbul: 9.1.3 transitivePeerDependencies: - supports-color + optional: true '@jest/reporters@29.7.0(node-notifier@8.0.2)': dependencies: @@ -38558,7 +38457,7 @@ snapshots: dependencies: playwright: 1.45.2 - '@pmmmwh/react-refresh-webpack-plugin@0.5.11(@types/webpack@4.41.39)(react-refresh@0.11.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.11(@types/webpack@4.41.39)(react-refresh@0.11.0)(type-fest@4.26.1)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0))': dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 @@ -38573,11 +38472,11 @@ snapshots: webpack: 5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0) optionalDependencies: '@types/webpack': 4.41.39 - type-fest: 4.21.0 + type-fest: 4.26.1 webpack-dev-server: 4.15.1(webpack-cli@4.10.0)(webpack@5.94.0) webpack-hot-middleware: 2.25.4 - '@pmmmwh/react-refresh-webpack-plugin@0.5.11(@types/webpack@4.41.39)(react-refresh@0.11.0)(type-fest@4.21.0)(webpack-hot-middleware@2.25.4)(webpack@5.94.0(esbuild@0.18.20))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.11(@types/webpack@4.41.39)(react-refresh@0.11.0)(type-fest@4.26.1)(webpack-hot-middleware@2.25.4)(webpack@5.94.0(esbuild@0.18.20))': dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 @@ -38592,10 +38491,10 @@ snapshots: webpack: 5.94.0(esbuild@0.18.20) optionalDependencies: '@types/webpack': 4.41.39 - type-fest: 4.21.0 + type-fest: 4.26.1 webpack-hot-middleware: 2.25.4 - '@pmmmwh/react-refresh-webpack-plugin@0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.26.1)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0))': dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 @@ -38610,11 +38509,11 @@ snapshots: webpack: 5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0) optionalDependencies: '@types/webpack': 4.41.39 - type-fest: 4.21.0 + type-fest: 4.26.1 webpack-dev-server: 4.15.1(webpack-cli@4.10.0)(webpack@5.94.0) webpack-hot-middleware: 2.25.4 - '@pmmmwh/react-refresh-webpack-plugin@0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(webpack-cli@4.10.0))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.26.1)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(webpack-cli@4.10.0))': dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 @@ -38629,7 +38528,7 @@ snapshots: webpack: 5.94.0(webpack-cli@4.10.0) optionalDependencies: '@types/webpack': 4.41.39 - type-fest: 4.21.0 + type-fest: 4.26.1 webpack-dev-server: 4.15.1(webpack-cli@4.10.0)(webpack@5.94.0) webpack-hot-middleware: 2.25.4 @@ -39419,15 +39318,15 @@ snapshots: '@radix-ui/number@1.0.1': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/primitive@1.0.1': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-arrow@1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -39437,7 +39336,7 @@ snapshots: '@radix-ui/react-collection@1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-compose-refs': 1.0.1(@types/react@17.0.21)(react@17.0.2) '@radix-ui/react-context': 1.0.1(@types/react@17.0.21)(react@17.0.2) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) @@ -39450,28 +39349,28 @@ snapshots: '@radix-ui/react-compose-refs@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 optionalDependencies: '@types/react': 17.0.21 '@radix-ui/react-context@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 optionalDependencies: '@types/react': 17.0.21 '@radix-ui/react-direction@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 optionalDependencies: '@types/react': 17.0.21 '@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@17.0.21)(react@17.0.2) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) @@ -39485,14 +39384,14 @@ snapshots: '@radix-ui/react-focus-guards@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 optionalDependencies: '@types/react': 17.0.21 '@radix-ui/react-focus-scope@1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-compose-refs': 1.0.1(@types/react@17.0.21)(react@17.0.2) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@17.0.21)(react@17.0.2) @@ -39504,7 +39403,7 @@ snapshots: '@radix-ui/react-id@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@17.0.21)(react@17.0.2) react: 17.0.2 optionalDependencies: @@ -39512,7 +39411,7 @@ snapshots: '@radix-ui/react-popper@1.1.2(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@floating-ui/react-dom': 2.0.2(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@radix-ui/react-arrow': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@radix-ui/react-compose-refs': 1.0.1(@types/react@17.0.21)(react@17.0.2) @@ -39531,7 +39430,7 @@ snapshots: '@radix-ui/react-portal@1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -39541,7 +39440,7 @@ snapshots: '@radix-ui/react-primitive@1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-slot': 1.0.2(@types/react@17.0.21)(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -39551,7 +39450,7 @@ snapshots: '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@radix-ui/react-compose-refs': 1.0.1(@types/react@17.0.21)(react@17.0.2) @@ -39569,7 +39468,7 @@ snapshots: '@radix-ui/react-select@1.2.2(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) @@ -39599,7 +39498,7 @@ snapshots: '@radix-ui/react-separator@1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -39609,7 +39508,7 @@ snapshots: '@radix-ui/react-slot@1.0.2(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-compose-refs': 1.0.1(@types/react@17.0.21)(react@17.0.2) react: 17.0.2 optionalDependencies: @@ -39617,7 +39516,7 @@ snapshots: '@radix-ui/react-toggle-group@1.0.4(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-context': 1.0.1(@types/react@17.0.21)(react@17.0.2) '@radix-ui/react-direction': 1.0.1(@types/react@17.0.21)(react@17.0.2) @@ -39633,7 +39532,7 @@ snapshots: '@radix-ui/react-toggle@1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@17.0.21)(react@17.0.2) @@ -39645,7 +39544,7 @@ snapshots: '@radix-ui/react-toolbar@1.0.4(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-context': 1.0.1(@types/react@17.0.21)(react@17.0.2) '@radix-ui/react-direction': 1.0.1(@types/react@17.0.21)(react@17.0.2) @@ -39661,14 +39560,14 @@ snapshots: '@radix-ui/react-use-callback-ref@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 optionalDependencies: '@types/react': 17.0.21 '@radix-ui/react-use-controllable-state@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@17.0.21)(react@17.0.2) react: 17.0.2 optionalDependencies: @@ -39676,7 +39575,7 @@ snapshots: '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@17.0.21)(react@17.0.2) react: 17.0.2 optionalDependencies: @@ -39684,21 +39583,21 @@ snapshots: '@radix-ui/react-use-layout-effect@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 optionalDependencies: '@types/react': 17.0.21 '@radix-ui/react-use-previous@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 optionalDependencies: '@types/react': 17.0.21 '@radix-ui/react-use-rect@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/rect': 1.0.1 react: 17.0.2 optionalDependencies: @@ -39706,7 +39605,7 @@ snapshots: '@radix-ui/react-use-size@1.0.1(@types/react@17.0.21)(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@17.0.21)(react@17.0.2) react: 17.0.2 optionalDependencies: @@ -39714,7 +39613,7 @@ snapshots: '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@radix-ui/react-primitive': 1.0.3(@types/react-dom@17.0.8)(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -39724,7 +39623,7 @@ snapshots: '@radix-ui/rect@1.0.1': dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 '@reactflow/background@11.3.6(@types/react@17.0.21)(immer@10.0.3(patch_hash=utu5oov26wz5mjuays57tp3ybu))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: @@ -39834,18 +39733,19 @@ snapshots: call-me-maybe: 1.0.2 openapi-types: 7.2.3 - '@redhat-developer/locators@1.1.3(@redhat-developer/page-objects@1.1.3(selenium-webdriver@4.22.0)(typescript@5.5.3))(selenium-webdriver@4.22.0)': + '@redhat-developer/locators@1.6.0(@redhat-developer/page-objects@1.6.0(selenium-webdriver@4.25.0)(typescript@5.5.3))(selenium-webdriver@4.25.0)': dependencies: - '@redhat-developer/page-objects': 1.1.3(selenium-webdriver@4.22.0)(typescript@5.5.3) - selenium-webdriver: 4.22.0 + '@redhat-developer/page-objects': 1.6.0(selenium-webdriver@4.25.0)(typescript@5.5.3) + selenium-webdriver: 4.25.0 - '@redhat-developer/page-objects@1.1.3(selenium-webdriver@4.22.0)(typescript@5.5.3)': + '@redhat-developer/page-objects@1.6.0(selenium-webdriver@4.25.0)(typescript@5.5.3)': dependencies: clipboardy: 4.0.0 clone-deep: 4.0.1 - compare-versions: 6.1.0 + compare-versions: 6.1.1 fs-extra: 11.2.0 - selenium-webdriver: 4.22.0 + selenium-webdriver: 4.25.0 + type-fest: 4.26.1 typescript: 5.5.3 '@repeaterjs/repeater@3.0.4': {} @@ -40333,7 +40233,7 @@ snapshots: ejs: 3.1.9 esbuild: 0.18.20 esbuild-plugin-alias: 0.2.1 - express: 4.21.0 + express: 4.21.1 find-cache-dir: 3.3.1 fs-extra: 11.2.0 process: 0.11.10 @@ -40355,7 +40255,7 @@ snapshots: ejs: 3.1.9 esbuild: 0.18.20 esbuild-plugin-alias: 0.2.1 - express: 4.21.0 + express: 4.21.1 find-cache-dir: 3.3.1 fs-extra: 11.2.0 process: 0.11.10 @@ -40377,7 +40277,7 @@ snapshots: ejs: 3.1.9 esbuild: 0.18.20 esbuild-plugin-alias: 0.2.1 - express: 4.21.0 + express: 4.21.1 find-cache-dir: 3.3.1 fs-extra: 11.2.0 process: 0.11.10 @@ -40414,7 +40314,7 @@ snapshots: case-sensitive-paths-webpack-plugin: 2.4.0 constants-browserify: 1.0.0 css-loader: 6.7.1(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)) - express: 4.21.0 + express: 4.21.1 fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.5.3)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)) fs-extra: 11.1.1 html-webpack-plugin: 5.5.3(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)) @@ -40474,7 +40374,7 @@ snapshots: case-sensitive-paths-webpack-plugin: 2.4.0 constants-browserify: 1.0.0 css-loader: 6.7.1(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) - express: 4.21.0 + express: 4.21.1 fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.5.3)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) fs-extra: 11.1.1 html-webpack-plugin: 5.5.3(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) @@ -40527,7 +40427,7 @@ snapshots: constants-browserify: 1.0.0 css-loader: 6.7.1(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) es-module-lexer: 1.4.1 - express: 4.21.0 + express: 4.21.1 fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.5.3)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) fs-extra: 11.1.1 html-webpack-plugin: 5.5.3(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) @@ -40577,7 +40477,7 @@ snapshots: constants-browserify: 1.0.0 css-loader: 6.7.1(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) es-module-lexer: 1.4.1 - express: 4.21.0 + express: 4.21.1 fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.5.3)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) fs-extra: 11.1.1 html-webpack-plugin: 5.5.3(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))) @@ -40627,7 +40527,7 @@ snapshots: constants-browserify: 1.0.0 css-loader: 6.7.1(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))) es-module-lexer: 1.4.1 - express: 4.21.0 + express: 4.21.1 fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.5.3)(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))) fs-extra: 11.1.1 html-webpack-plugin: 5.5.3(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))) @@ -40670,7 +40570,7 @@ snapshots: '@storybook/client-logger': 7.6.13 '@storybook/core-events': 7.6.13 '@storybook/global': 5.0.0 - qs: 6.11.2 + qs: 6.13.0 telejson: 7.2.0 tiny-invariant: 1.3.1 @@ -40697,7 +40597,7 @@ snapshots: detect-indent: 6.1.0 envinfo: 7.8.1 execa: 5.1.1 - express: 4.21.0 + express: 4.21.1 find-up: 5.0.0 fs-extra: 11.1.1 get-npm-tarball-url: 2.0.3 @@ -40746,7 +40646,7 @@ snapshots: detect-indent: 6.1.0 envinfo: 7.8.1 execa: 5.1.1 - express: 4.21.0 + express: 4.21.1 find-up: 5.0.0 fs-extra: 11.1.1 get-npm-tarball-url: 2.0.3 @@ -40795,7 +40695,7 @@ snapshots: detect-indent: 6.1.0 envinfo: 7.8.1 execa: 5.1.1 - express: 4.21.0 + express: 4.21.1 find-up: 5.0.0 fs-extra: 11.1.1 get-npm-tarball-url: 2.0.3 @@ -41038,7 +40938,7 @@ snapshots: cli-table3: 0.6.1 compression: 1.7.4 detect-port: 1.5.1 - express: 4.21.0 + express: 4.21.1 fs-extra: 11.2.0 globby: 11.1.0 ip: 2.0.0 @@ -41087,7 +40987,7 @@ snapshots: cli-table3: 0.6.1 compression: 1.7.4 detect-port: 1.5.1 - express: 4.21.0 + express: 4.21.1 fs-extra: 11.2.0 globby: 11.1.0 ip: 2.0.0 @@ -41136,7 +41036,7 @@ snapshots: cli-table3: 0.6.1 compression: 1.7.4 detect-port: 1.5.1 - express: 4.21.0 + express: 4.21.1 fs-extra: 11.2.0 globby: 11.1.0 ip: 2.0.0 @@ -41328,11 +41228,11 @@ snapshots: '@storybook/postinstall@7.4.6': {} - '@storybook/preset-react-webpack@7.4.6(@babel/core@7.16.12)(@swc/core@1.3.92)(@types/webpack@4.41.39)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': + '@storybook/preset-react-webpack@7.4.6(@babel/core@7.16.12)(@swc/core@1.3.92)(@types/webpack@4.41.39)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': dependencies: '@babel/preset-flow': 7.22.15(@babel/core@7.16.12) '@babel/preset-react': 7.22.15(@babel/core@7.16.12) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.11.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.11.0)(type-fest@4.26.1)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) '@storybook/core-webpack': 7.4.6 '@storybook/docs-tools': 7.4.6 '@storybook/node-logger': 7.4.6 @@ -41365,11 +41265,11 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/preset-react-webpack@7.4.6(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-hot-middleware@2.25.4)': + '@storybook/preset-react-webpack@7.4.6(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-hot-middleware@2.25.4)': dependencies: '@babel/preset-flow': 7.22.15(@babel/core@7.23.9) '@babel/preset-react': 7.22.15(@babel/core@7.23.9) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.11.0)(type-fest@4.21.0)(webpack-hot-middleware@2.25.4)(webpack@5.94.0(esbuild@0.18.20)) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.11.0)(type-fest@4.26.1)(webpack-hot-middleware@2.25.4)(webpack@5.94.0(esbuild@0.18.20)) '@storybook/core-webpack': 7.4.6(encoding@0.1.13) '@storybook/docs-tools': 7.4.6(encoding@0.1.13) '@storybook/node-logger': 7.4.6 @@ -41402,11 +41302,11 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/preset-react-webpack@7.6.13(@babel/core@7.18.10)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': + '@storybook/preset-react-webpack@7.6.13(@babel/core@7.18.10)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': dependencies: '@babel/preset-flow': 7.22.15(@babel/core@7.18.10) '@babel/preset-react': 7.22.15(@babel/core@7.18.10) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(webpack-cli@4.10.0)) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.26.1)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(webpack-cli@4.10.0)) '@storybook/core-webpack': 7.6.13(encoding@0.1.13) '@storybook/docs-tools': 7.6.13(encoding@0.1.13) '@storybook/node-logger': 7.6.13 @@ -41440,11 +41340,11 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/preset-react-webpack@7.6.13(@babel/core@7.23.0)(@swc/core@1.3.92)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': + '@storybook/preset-react-webpack@7.6.13(@babel/core@7.23.0)(@swc/core@1.3.92)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': dependencies: '@babel/preset-flow': 7.22.15(@babel/core@7.23.0) '@babel/preset-react': 7.22.15(@babel/core@7.23.0) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.26.1)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(@swc/core@1.3.92)(esbuild@0.18.20)(webpack-cli@4.10.0)) '@storybook/core-webpack': 7.6.13(encoding@0.1.13) '@storybook/docs-tools': 7.6.13(encoding@0.1.13) '@storybook/node-logger': 7.6.13 @@ -41478,11 +41378,11 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/preset-react-webpack@7.6.13(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': + '@storybook/preset-react-webpack@7.6.13(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': dependencies: '@babel/preset-flow': 7.22.15(@babel/core@7.23.9) '@babel/preset-react': 7.22.15(@babel/core@7.23.9) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.21.0)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(webpack-cli@4.10.0)) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(@types/webpack@4.41.39)(react-refresh@0.14.0)(type-fest@4.26.1)(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)(webpack@5.94.0(webpack-cli@4.10.0)) '@storybook/core-webpack': 7.6.13(encoding@0.1.13) '@storybook/docs-tools': 7.6.13(encoding@0.1.13) '@storybook/node-logger': 7.6.13 @@ -41606,10 +41506,10 @@ snapshots: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - '@storybook/react-webpack5@7.4.6(@babel/core@7.16.12)(@swc/core@1.3.92)(@types/react-dom@17.0.8)(@types/react@17.0.21)(@types/webpack@4.41.39)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': + '@storybook/react-webpack5@7.4.6(@babel/core@7.16.12)(@swc/core@1.3.92)(@types/react-dom@17.0.8)(@types/react@17.0.21)(@types/webpack@4.41.39)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': dependencies: '@storybook/builder-webpack5': 7.4.6(@types/react-dom@17.0.8)(@types/react@17.0.21)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0)) - '@storybook/preset-react-webpack': 7.4.6(@babel/core@7.16.12)(@swc/core@1.3.92)(@types/webpack@4.41.39)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) + '@storybook/preset-react-webpack': 7.4.6(@babel/core@7.16.12)(@swc/core@1.3.92)(@types/webpack@4.41.39)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) '@storybook/react': 7.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@types/node': 16.18.58 react: 17.0.2 @@ -41634,10 +41534,10 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react-webpack5@7.4.6(@babel/core@7.23.9)(@types/react-dom@17.0.8)(@types/react@17.0.21)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-hot-middleware@2.25.4)': + '@storybook/react-webpack5@7.4.6(@babel/core@7.23.9)(@types/react-dom@17.0.8)(@types/react@17.0.21)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-hot-middleware@2.25.4)': dependencies: '@storybook/builder-webpack5': 7.4.6(@types/react-dom@17.0.8)(@types/react@17.0.21)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) - '@storybook/preset-react-webpack': 7.4.6(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-hot-middleware@2.25.4) + '@storybook/preset-react-webpack': 7.4.6(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-hot-middleware@2.25.4) '@storybook/react': 7.4.6(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@types/node': 16.18.58 react: 17.0.2 @@ -41662,10 +41562,10 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react-webpack5@7.6.13(@babel/core@7.18.10)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': + '@storybook/react-webpack5@7.6.13(@babel/core@7.18.10)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': dependencies: '@storybook/builder-webpack5': 7.6.13(encoding@0.1.13)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0)) - '@storybook/preset-react-webpack': 7.6.13(@babel/core@7.18.10)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) + '@storybook/preset-react-webpack': 7.6.13(@babel/core@7.18.10)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) '@storybook/react': 7.6.13(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@types/node': 18.17.18 react: 17.0.2 @@ -41688,10 +41588,10 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react-webpack5@7.6.13(@babel/core@7.23.0)(@swc/core@1.3.92)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': + '@storybook/react-webpack5@7.6.13(@babel/core@7.23.0)(@swc/core@1.3.92)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': dependencies: '@storybook/builder-webpack5': 7.6.13(encoding@0.1.13)(esbuild@0.18.20)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0)) - '@storybook/preset-react-webpack': 7.6.13(@babel/core@7.23.0)(@swc/core@1.3.92)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) + '@storybook/preset-react-webpack': 7.6.13(@babel/core@7.23.0)(@swc/core@1.3.92)(@types/webpack@4.41.39)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) '@storybook/react': 7.6.13(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@types/node': 18.17.18 react: 17.0.2 @@ -41714,10 +41614,10 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react-webpack5@7.6.13(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': + '@storybook/react-webpack5@7.6.13(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4)': dependencies: '@storybook/builder-webpack5': 7.6.13(encoding@0.1.13)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0)) - '@storybook/preset-react-webpack': 7.6.13(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.21.0)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) + '@storybook/preset-react-webpack': 7.6.13(@babel/core@7.23.9)(@types/webpack@4.41.39)(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@4.26.1)(typescript@5.5.3)(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@4.15.1)(webpack@5.94.0))(webpack-dev-server@4.15.1(webpack-cli@4.10.0)(webpack@5.94.0))(webpack-hot-middleware@2.25.4) '@storybook/react': 7.6.13(encoding@0.1.13)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.5.3) '@types/node': 18.17.18 react: 17.0.2 @@ -41845,7 +41745,7 @@ snapshots: dependencies: '@storybook/client-logger': 7.6.13 memoizerific: 1.11.3 - qs: 6.11.2 + qs: 6.13.0 '@storybook/store@7.4.6': dependencies: @@ -42116,21 +42016,6 @@ snapshots: '@types/jest': 29.5.12 jest: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))': - dependencies: - '@adobe/css-tools': 4.4.0 - '@babel/runtime': 7.23.6 - aria-query: 5.1.3 - chalk: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.6.3 - lodash: 4.17.21 - redent: 3.0.0 - optionalDependencies: - '@jest/globals': 29.7.0 - '@types/jest': 29.5.12 - jest: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - '@testing-library/react-hooks@8.0.1(@types/react@17.0.21)(react-dom@17.0.2(react@17.0.2))(react-test-renderer@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: '@babel/runtime': 7.23.6 @@ -42530,11 +42415,6 @@ snapshots: dependencies: '@types/node': 20.14.13 - '@types/inquirer@7.3.3': - dependencies: - '@types/through': 0.0.30 - rxjs: 6.6.7 - '@types/invariant@2.2.35': {} '@types/istanbul-lib-coverage@2.0.1': {} @@ -42773,10 +42653,10 @@ snapshots: dependencies: '@types/ws': 8.5.5 - '@types/selenium-webdriver@4.1.24': + '@types/selenium-webdriver@4.1.26': dependencies: - '@types/node': 20.14.2 - '@types/ws': 8.5.5 + '@types/node': 20.14.13 + '@types/ws': 8.5.12 '@types/semver@6.2.3': {} @@ -42840,10 +42720,6 @@ snapshots: dependencies: '@types/jest': 29.5.12 - '@types/through@0.0.30': - dependencies: - '@types/node': 20.14.2 - '@types/tough-cookie@4.0.2': {} '@types/treeify@1.0.0': {} @@ -43098,7 +42974,7 @@ snapshots: optionalDependencies: keytar: 7.9.0 - '@vscode/vsce@2.29.0': + '@vscode/vsce@3.1.1': dependencies: '@azure/identity': 4.3.0 '@vscode/vsce-sign': 2.0.4 @@ -43108,16 +42984,16 @@ snapshots: cockatiel: 3.1.3 commander: 6.2.1 form-data: 4.0.0 - glob: 7.2.3 + glob: 11.0.0 hosted-git-info: 4.1.0 - jsonc-parser: 3.2.0 + jsonc-parser: 3.3.1 leven: 3.1.0 - markdown-it: 12.3.2 + markdown-it: 14.1.0 mime: 1.6.0 minimatch: 3.1.2 parse-semver: 1.1.1 read: 1.0.7 - semver: 7.5.4 + semver: 7.6.3 tmp: 0.2.3 typed-rest-client: 1.8.4 url-join: 4.0.1 @@ -43641,7 +43517,7 @@ snapshots: agentkeepalive@4.1.4: dependencies: - debug: 4.3.4 + debug: 4.3.6 depd: 1.1.2 humanize-ms: 1.2.1 transitivePeerDependencies: @@ -43880,7 +43756,7 @@ snapshots: dependencies: graphql: 14.3.1 - apollo-server-express@3.13.0(encoding@0.1.13)(express@4.21.0)(graphql@14.3.1): + apollo-server-express@3.13.0(encoding@0.1.13)(express@4.21.1)(graphql@14.3.1): dependencies: '@types/accepts': 1.3.7 '@types/body-parser': 1.19.2 @@ -43892,7 +43768,7 @@ snapshots: apollo-server-types: 3.8.0(encoding@0.1.13)(graphql@14.3.1) body-parser: 1.20.3 cors: 2.8.5 - express: 4.21.0 + express: 4.21.1 graphql: 14.3.1 parseurl: 1.3.3 transitivePeerDependencies: @@ -44411,7 +44287,7 @@ snapshots: babel-plugin-macros@2.8.0: dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 cosmiconfig: 6.0.0 resolve: 1.22.8 @@ -45252,10 +45128,10 @@ snapshots: cacheable-request@10.2.11: dependencies: - '@types/http-cache-semantics': 4.0.1 + '@types/http-cache-semantics': 4.0.4 get-stream: 7.0.0 http-cache-semantics: 4.1.1 - keyv: 4.5.2 + keyv: 4.5.4 mimic-response: 4.0.0 normalize-url: 8.0.0 responselike: 3.0.0 @@ -45707,7 +45583,7 @@ snapshots: commondir@1.0.1: {} - compare-versions@6.1.0: {} + compare-versions@6.1.1: {} component-emitter@1.3.0: {} @@ -45824,6 +45700,8 @@ snapshots: cookie@0.6.0: {} + cookie@0.7.1: {} + cookiejar@2.1.4: {} cookies@0.8.0: @@ -46692,7 +46570,7 @@ snapshots: date-fns@2.30.0: dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 date-format@4.0.3: {} @@ -46843,7 +46721,7 @@ snapshots: object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.2 - side-channel: 1.0.4 + side-channel: 1.0.6 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 which-typed-array: 1.1.15 @@ -47038,7 +46916,7 @@ snapshots: dom-helpers@5.2.0: dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 csstype: 3.0.11 dom-serialize@2.2.1: @@ -47112,6 +46990,10 @@ snapshots: typescript: 5.5.3 yargs: 17.7.2 + duplexer2@0.1.4: + dependencies: + readable-stream: 2.3.7 + duplexer@0.1.2: {} duplexify@3.7.1: @@ -47963,9 +47845,9 @@ snapshots: exponential-backoff@3.1.1: {} - express-rate-limit@7.4.0(express@4.21.0): + express-rate-limit@7.4.0(express@4.21.1): dependencies: - express: 4.21.0 + express: 4.21.1 express@4.19.2: dependencies: @@ -48003,14 +47885,14 @@ snapshots: transitivePeerDependencies: - supports-color - express@4.21.0: + express@4.21.1: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 body-parser: 1.20.3 content-disposition: 0.5.4 content-type: 1.0.5 - cookie: 0.6.0 + cookie: 0.7.1 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 @@ -48548,7 +48430,7 @@ snapshots: dezalgo: 1.0.4 hexoid: 1.0.0 once: 1.4.0 - qs: 6.11.2 + qs: 6.13.0 forwarded@0.2.0: {} @@ -48779,6 +48661,15 @@ snapshots: package-json-from-dist: 1.0.0 path-scurry: 1.11.1 + glob@11.0.0: + dependencies: + foreground-child: 3.1.1 + jackspeak: 4.0.2 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 2.0.0 + glob@7.2.0: dependencies: fs.realpath: 1.0.0 @@ -49075,7 +48966,7 @@ snapshots: history@5.3.0: dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 hmac-drbg@1.0.1: dependencies: @@ -49507,23 +49398,6 @@ snapshots: ini@4.1.3: {} - inquirer@8.2.0: - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.5.2 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - inquirer@8.2.4: dependencies: ansi-escapes: 4.3.2 @@ -49546,7 +49420,7 @@ snapshots: dependencies: es-errors: 1.3.0 hasown: 2.0.2 - side-channel: 1.0.4 + side-channel: 1.0.6 internmap@1.0.1: {} @@ -49961,6 +49835,10 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jackspeak@4.0.2: + dependencies: + '@isaacs/cliui': 8.0.2 + jake@10.8.7: dependencies: async: 3.2.3 @@ -50127,25 +50005,6 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - exit: 0.1.2 - import-local: 3.0.2 - jest-config: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - jest-config@29.7.0(@types/node@20.14.2): dependencies: '@babel/core': 7.24.9 @@ -50732,6 +50591,10 @@ snapshots: dependencies: jest: 29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@20.14.2)(typescript@5.5.3)) + jest-when@3.6.0(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3))): + dependencies: + jest: 29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)) + jest-when@3.6.0(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3))): dependencies: jest: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)) @@ -50740,10 +50603,6 @@ snapshots: dependencies: jest: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - jest-when@3.6.0(jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3))): - dependencies: - jest: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - jest-worker@25.5.0: dependencies: merge-stream: 2.0.0 @@ -50851,18 +50710,6 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - '@jest/types': 29.6.3 - import-local: 3.0.2 - jest-cli: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - jiti@1.17.1: {} jiti@1.21.6: {} @@ -51456,6 +51303,10 @@ snapshots: dependencies: uc.micro: 1.0.6 + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + listr2@3.14.0(enquirer@2.3.6): dependencies: cli-truncate: 2.1.0 @@ -51674,6 +51525,8 @@ snapshots: lru-cache@10.4.2: {} + lru-cache@11.0.1: {} + lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 @@ -51787,6 +51640,15 @@ snapshots: mdurl: 1.0.1 uc.micro: 1.0.6 + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + markdown-table@3.0.2: {} markdown-to-jsx@7.3.2(react@17.0.2): @@ -51821,6 +51683,8 @@ snapshots: mdurl@1.0.1: {} + mdurl@2.0.0: {} + media-typer@0.3.0: {} mem@6.1.1: @@ -51949,12 +51813,6 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.8.1(webpack@5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0)): - dependencies: - schema-utils: 4.2.0 - tapable: 2.2.1 - webpack: 5.94.0(@swc/core@1.3.92)(webpack-cli@4.10.0) - mini-css-extract-plugin@2.9.0(webpack@5.92.1(esbuild@0.21.5)): dependencies: schema-utils: 4.2.0 @@ -51971,6 +51829,10 @@ snapshots: minimalistic-crypto-utils@1.0.1: {} + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@3.0.4: dependencies: brace-expansion: 1.1.11 @@ -53057,6 +52919,11 @@ snapshots: lru-cache: 10.4.2 minipass: 7.1.2 + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.1 + minipass: 7.1.2 + path-temp@2.0.0: dependencies: unique-string: 2.0.0 @@ -53636,6 +53503,8 @@ snapshots: inherits: 2.0.4 pump: 2.0.1 + punycode.js@2.3.1: {} + punycode@1.4.1: {} punycode@2.3.0: {} @@ -53693,7 +53562,7 @@ snapshots: qs@6.10.4: dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 qs@6.11.0: dependencies: @@ -53915,7 +53784,7 @@ snapshots: dependencies: '@babel/core': 7.24.9 '@babel/generator': 7.23.6 - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 ast-types: 0.14.2 commander: 2.20.3 doctrine: 3.0.0 @@ -53988,9 +53857,9 @@ snapshots: '@babel/runtime': 7.23.6 react: 17.0.2 - react-error-boundary@4.0.12(react@17.0.2): + react-error-boundary@4.0.13(react@17.0.2): dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 react: 17.0.2 react-fast-compare@2.0.4: {} @@ -54445,11 +54314,11 @@ snapshots: regenerator-transform@0.15.1: dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 regex-not@1.0.2: dependencies: @@ -54493,7 +54362,7 @@ snapshots: relay-runtime@12.0.0(encoding@0.1.13): dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.7 fbjs: 3.0.2(encoding@0.1.13) invariant: 2.2.4 transitivePeerDependencies: @@ -54750,10 +54619,6 @@ snapshots: run-script-os@1.1.6: {} - rxjs@6.6.7: - dependencies: - tslib: 1.14.1 - rxjs@7.5.2: dependencies: tslib: 2.3.1 @@ -54929,8 +54794,9 @@ snapshots: - bufferutil - utf-8-validate - selenium-webdriver@4.22.0: + selenium-webdriver@4.25.0: dependencies: + '@bazel/runfiles': 5.8.1 jszip: 3.10.1 tmp: 0.2.3 ws: 8.18.0 @@ -55300,7 +55166,7 @@ snapshots: socks-proxy-agent@6.1.1: dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.6 socks: 2.6.1 transitivePeerDependencies: - supports-color @@ -55767,7 +55633,7 @@ snapshots: formidable: 2.1.1 methods: 1.1.2 mime: 2.6.0 - qs: 6.11.2 + qs: 6.13.0 readable-stream: 3.6.0 semver: 7.5.4 transitivePeerDependencies: @@ -55826,9 +55692,9 @@ snapshots: swagger-ui-dist@5.11.2: {} - swagger-ui-express@5.0.0(express@4.21.0): + swagger-ui-express@5.0.0(express@4.21.1): dependencies: - express: 4.21.0 + express: 4.21.1 swagger-ui-dist: 5.11.2 swap-case@2.0.2: @@ -56280,11 +56146,11 @@ snapshots: babel-jest: 29.7.0(@babel/core@7.16.12) esbuild: 0.15.13 - ts-jest@29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(esbuild@0.18.20)(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@20.14.2)(typescript@5.5.3)))(typescript@5.5.3): + ts-jest@29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(esbuild@0.18.20)(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@20.14.2)(typescript@5.5.3)) + jest: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -56299,11 +56165,11 @@ snapshots: babel-jest: 29.7.0(@babel/core@7.16.12) esbuild: 0.18.20 - ts-jest@29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3): + ts-jest@29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)))(typescript@5.5.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)) + jest: 29.7.0(@types/node@20.14.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@20.14.2)(typescript@5.5.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -56317,11 +56183,11 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.16.12) - ts-jest@29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3): + ts-jest@29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) + jest: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.3.92)(@types/node@22.5.2)(typescript@5.5.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -56335,11 +56201,11 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.16.12) - ts-jest@29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3): + ts-jest@29.1.5(@babel/core@7.16.12)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.16.12))(jest@29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)))(typescript@5.5.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) + jest: 29.7.0(@types/node@22.5.2)(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.5.2)(typescript@5.5.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -56744,8 +56610,7 @@ snapshots: type-fest@2.19.0: {} - type-fest@4.21.0: - optional: true + type-fest@4.26.1: {} type-is@1.6.18: dependencies: @@ -56833,6 +56698,8 @@ snapshots: uc.micro@1.0.6: {} + uc.micro@2.1.0: {} + uglify-js@3.17.4: optional: true @@ -56991,6 +56858,14 @@ snapshots: untildify@4.0.0: {} + unzipper@0.12.3: + dependencies: + bluebird: 3.7.2 + duplexer2: 0.1.4 + fs-extra: 11.2.0 + graceful-fs: 4.2.11 + node-int64: 0.4.0 + update-browserslist-db@1.0.13(browserslist@4.23.0): dependencies: browserslist: 4.23.0 @@ -57392,26 +57267,27 @@ snapshots: void-elements@2.0.1: {} - vscode-extension-tester@8.3.1(mocha@10.6.0)(typescript@5.5.3): + vscode-extension-tester@8.8.0(mocha@10.6.0)(typescript@5.5.3): dependencies: - '@redhat-developer/locators': 1.1.3(@redhat-developer/page-objects@1.1.3(selenium-webdriver@4.22.0)(typescript@5.5.3))(selenium-webdriver@4.22.0) - '@redhat-developer/page-objects': 1.1.3(selenium-webdriver@4.22.0)(typescript@5.5.3) - '@types/selenium-webdriver': 4.1.24 - '@vscode/vsce': 2.29.0 + '@redhat-developer/locators': 1.6.0(@redhat-developer/page-objects@1.6.0(selenium-webdriver@4.25.0)(typescript@5.5.3))(selenium-webdriver@4.25.0) + '@redhat-developer/page-objects': 1.6.0(selenium-webdriver@4.25.0)(typescript@5.5.3) + '@types/selenium-webdriver': 4.1.26 + '@vscode/vsce': 3.1.1 c8: 10.1.2 commander: 12.1.0 - compare-versions: 6.1.0 + compare-versions: 6.1.1 find-up: 7.0.0 fs-extra: 11.2.0 - glob: 10.4.5 + glob: 11.0.0 got: 13.0.0 hpagent: 1.2.0 js-yaml: 4.1.0 mocha: 10.6.0 sanitize-filename: 1.6.3 - selenium-webdriver: 4.22.0 + selenium-webdriver: 4.25.0 targz: 1.0.1 typescript: 5.5.3 + unzipper: 0.12.3 transitivePeerDependencies: - bufferutil - monocart-coverage-reports @@ -57760,7 +57636,7 @@ snapshots: compression: 1.7.4 connect-history-api-fallback: 2.0.0 default-gateway: 6.0.3 - express: 4.21.0 + express: 4.21.1 graceful-fs: 4.2.11 html-entities: 2.5.2 http-proxy-middleware: 2.0.6(@types/express@4.17.21) diff --git a/repo/MANUAL.md b/repo/MANUAL.md index 5e8f1cf340d..f283ede6f04 100644 --- a/repo/MANUAL.md +++ b/repo/MANUAL.md @@ -198,7 +198,7 @@ A few scripts are available for general purpose usage on `kie-tools`. They're bu - [sparse-checkout](../scripts/sparse-checkout/README.md): Partially clone `kie-tools` and work on a subset of its packages. - Mostly used by our automations - [check-junit-report-results](../scripts/check-junit-report-results/README.md): Checks JUnit XML files to see if tests failed. Used on our CI. - - [update-kogito-version](../scripts/update-kogito-version/README.md): Updates the version of Kogito Maven dependencies. (E.g., `999-20240912-SNAPSHOT`, `999-SNAPSHOT` or `10.0.0`) + - [update-kogito-version](../scripts/update-kogito-version/README.md): Updates the version of Kogito Maven dependencies. (E.g., `999-20241016-SNAPSHOT`, `999-SNAPSHOT` or `10.0.0`) - [update-stream-name](../scripts/update-stream-name/README.md): Updates this repo's stream name. (E.g., `main` or `10.0.x`) - [update-version](../scripts/update-version/README.md): Updates this repo's version (E.g., `0.0.0` or `10.0.999`) diff --git a/repo/graph.dot b/repo/graph.dot index 0ddae736b2b..46b184fa133 100644 --- a/repo/graph.dot +++ b/repo/graph.dot @@ -25,7 +25,6 @@ digraph G { "@kie-tools/jbpm-quarkus-devui" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; "@kie-tools-examples/jbpm-compact-architecture-example" [ color = "orange", fontcolor = "orange", style = "dashed, rounded" ]; "@kie-tools/kogito-management-console" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; - "@kie-tools/kogito-task-console" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; "@kie-tools-examples/ping-pong-view" [ color = "orange", fontcolor = "orange", style = "dashed, rounded" ]; "@kie-tools-core/envelope" [ color = "purple", fontcolor = "purple", style = "rounded" ]; "@kie-tools-examples/ping-pong-view-angular" [ color = "orange", fontcolor = "orange", style = "dashed, rounded" ]; @@ -149,7 +148,6 @@ digraph G { "@kie/kogito-jobs-service-ephemeral-image" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; "@kie/kogito-jobs-service-postgresql-image" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; "@kie-tools/runtime-tools-management-console-webapp" [ color = "blue", fontcolor = "blue", style = "rounded" ]; - "@kie-tools/runtime-tools-task-console-webapp" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools-core/kubernetes-bridge" [ color = "purple", fontcolor = "purple", style = "rounded" ]; "@kie-tools-core/workspace" [ color = "purple", fontcolor = "purple", style = "rounded" ]; "@kie-tools/unitables-dmn" [ color = "blue", fontcolor = "blue", style = "rounded" ]; @@ -168,6 +166,7 @@ digraph G { "@kie-tools/runtime-tools-swf-webapp-components" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools/scesim-editor" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools/scesim-marshaller" [ color = "blue", fontcolor = "blue", style = "rounded" ]; + "@kie-tools/scesim-editor-envelope" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools/serverless-logic-web-tools" [ color = "black", fontcolor = "black", style = "dashed, rounded" ]; "@kie-tools/text-editor" [ color = "blue", fontcolor = "blue", style = "rounded" ]; "@kie-tools/yard-editor" [ color = "blue", fontcolor = "blue", style = "rounded" ]; @@ -226,7 +225,6 @@ digraph G { "@kie-tools-examples/drools-process-usertasks-quarkus-example" -> "@kie-tools/jbpm-quarkus-devui" [ style = "solid", color = "orange" ]; "@kie-tools-examples/jbpm-compact-architecture-example" -> "@kie-tools/jbpm-quarkus-devui" [ style = "solid", color = "orange" ]; "@kie-tools-examples/jbpm-compact-architecture-example" -> "@kie-tools/kogito-management-console" [ style = "dashed", color = "orange" ]; - "@kie-tools-examples/jbpm-compact-architecture-example" -> "@kie-tools/kogito-task-console" [ style = "dashed", color = "orange" ]; "@kie-tools-examples/ping-pong-view" -> "@kie-tools-core/envelope" [ style = "solid", color = "orange" ]; "@kie-tools-examples/ping-pong-view-angular" -> "@kie-tools-examples/ping-pong-view" [ style = "solid", color = "orange" ]; "@kie-tools-examples/ping-pong-view-react" -> "@kie-tools-examples/ping-pong-view" [ style = "solid", color = "orange" ]; @@ -445,18 +443,21 @@ digraph G { "@kie-tools/kie-sandbox-webapp-image" -> "@kie-tools/image-builder" [ style = "dashed", color = "black" ]; "@kie-tools/kn-plugin-workflow" -> "@kie-tools/sonataflow-operator" [ style = "dashed", color = "black" ]; "@kie/kogito-base-builder-image" -> "@kie-tools/sonataflow-image-common" [ style = "dashed", color = "black" ]; + "@kie/kogito-data-index-ephemeral-image" -> "@kie-tools/maven-base" [ style = "dashed", color = "black" ]; "@kie/kogito-data-index-ephemeral-image" -> "@kie-tools/sonataflow-image-common" [ style = "dashed", color = "black" ]; + "@kie/kogito-data-index-postgresql-image" -> "@kie-tools/maven-base" [ style = "dashed", color = "black" ]; "@kie/kogito-data-index-postgresql-image" -> "@kie-tools/sonataflow-image-common" [ style = "dashed", color = "black" ]; + "@kie/kogito-jit-runner-image" -> "@kie-tools/maven-base" [ style = "dashed", color = "black" ]; "@kie/kogito-jit-runner-image" -> "@kie-tools/sonataflow-image-common" [ style = "dashed", color = "black" ]; + "@kie/kogito-jobs-service-allinone-image" -> "@kie-tools/maven-base" [ style = "dashed", color = "black" ]; "@kie/kogito-jobs-service-allinone-image" -> "@kie-tools/sonataflow-image-common" [ style = "dashed", color = "black" ]; + "@kie/kogito-jobs-service-ephemeral-image" -> "@kie-tools/maven-base" [ style = "dashed", color = "black" ]; "@kie/kogito-jobs-service-ephemeral-image" -> "@kie-tools/sonataflow-image-common" [ style = "dashed", color = "black" ]; + "@kie/kogito-jobs-service-postgresql-image" -> "@kie-tools/maven-base" [ style = "dashed", color = "black" ]; "@kie/kogito-jobs-service-postgresql-image" -> "@kie-tools/sonataflow-image-common" [ style = "dashed", color = "black" ]; "@kie-tools/kogito-management-console" -> "@kie-tools/image-builder" [ style = "dashed", color = "black" ]; "@kie-tools/kogito-management-console" -> "@kie-tools/image-env-to-json" [ style = "dashed", color = "black" ]; "@kie-tools/kogito-management-console" -> "@kie-tools/runtime-tools-management-console-webapp" [ style = "dashed", color = "black" ]; - "@kie-tools/kogito-task-console" -> "@kie-tools/image-builder" [ style = "dashed", color = "black" ]; - "@kie-tools/kogito-task-console" -> "@kie-tools/image-env-to-json" [ style = "dashed", color = "black" ]; - "@kie-tools/kogito-task-console" -> "@kie-tools/runtime-tools-task-console-webapp" [ style = "dashed", color = "black" ]; "@kie-tools-core/kubernetes-bridge" -> "@kie-tools/cors-proxy-api" [ style = "solid", color = "purple" ]; "@kie-tools/maven-base" -> "@kie-tools/root-env" [ style = "dashed", color = "black" ]; "@kie-tools/maven-m2-repo-via-http-image" -> "@kie-tools/image-builder" [ style = "dashed", color = "black" ]; @@ -499,7 +500,6 @@ digraph G { "@kie-tools/runtime-tools-components" -> "@kie-tools/runtime-tools-shared-gateway-api" [ style = "solid", color = "blue" ]; "@kie-tools/runtime-tools-components" -> "@kie-tools/uniforms-patternfly" [ style = "solid", color = "blue" ]; "@kie-tools/runtime-tools-consoles-helm-chart" -> "@kie-tools/kogito-management-console" [ style = "solid", color = "black" ]; - "@kie-tools/runtime-tools-consoles-helm-chart" -> "@kie-tools/kogito-task-console" [ style = "solid", color = "black" ]; "@kie-tools/runtime-tools-management-console-webapp" -> "@kie-tools/runtime-tools-process-webapp-components" [ style = "solid", color = "blue" ]; "@kie-tools/runtime-tools-management-console-webapp" -> "@kie-tools/runtime-tools-shared-webapp-components" [ style = "solid", color = "blue" ]; "@kie-tools/runtime-tools-process-dev-ui-webapp" -> "@kie-tools/runtime-tools-process-webapp-components" [ style = "solid", color = "blue" ]; @@ -523,11 +523,11 @@ digraph G { "@kie-tools/runtime-tools-swf-gateway-api" -> "@kie-tools/runtime-tools-shared-gateway-api" [ style = "solid", color = "blue" ]; "@kie-tools/runtime-tools-swf-gateway-api" -> "@kie-tools/jest-base" [ style = "dashed", color = "blue" ]; "@kie-tools/runtime-tools-swf-webapp-components" -> "@kie-tools/runtime-tools-swf-enveloped-components" [ style = "solid", color = "blue" ]; - "@kie-tools/runtime-tools-task-console-webapp" -> "@kie-tools-core/react-hooks" [ style = "solid", color = "blue" ]; - "@kie-tools/runtime-tools-task-console-webapp" -> "@kie-tools/runtime-tools-process-webapp-components" [ style = "solid", color = "blue" ]; - "@kie-tools/runtime-tools-task-console-webapp" -> "@kie-tools/runtime-tools-shared-webapp-components" [ style = "solid", color = "blue" ]; "@kie-tools/scesim-editor" -> "@kie-tools/boxed-expression-component" [ style = "solid", color = "blue" ]; "@kie-tools/scesim-editor" -> "@kie-tools/scesim-marshaller" [ style = "solid", color = "blue" ]; + "@kie-tools/scesim-editor-envelope" -> "@kie-tools-core/editor" [ style = "solid", color = "blue" ]; + "@kie-tools/scesim-editor-envelope" -> "@kie-tools-core/react-hooks" [ style = "solid", color = "blue" ]; + "@kie-tools/scesim-editor-envelope" -> "@kie-tools/scesim-editor" [ style = "solid", color = "blue" ]; "@kie-tools/scesim-marshaller" -> "@kie-tools/xml-parser-ts-codegen" [ style = "dashed", color = "blue" ]; "@kie-tools/serverless-logic-web-tools" -> "@kie-tools-core/kubernetes-bridge" [ style = "solid", color = "black" ]; "@kie-tools/serverless-logic-web-tools" -> "@kie-tools-core/workspaces-git-fs" [ style = "solid", color = "black" ]; diff --git a/repo/graph.json b/repo/graph.json index f5b94a13645..3e1949c32b0 100644 --- a/repo/graph.json +++ b/repo/graph.json @@ -34,11 +34,9 @@ { "id": "@kie-tools/runtime-tools-process-dev-ui-webapp" }, { "id": "@kie-tools-examples/jbpm-compact-architecture-example" }, { "id": "@kie-tools/kogito-management-console" }, - { "id": "@kie-tools/kogito-task-console" }, { "id": "@kie-tools/image-builder" }, { "id": "@kie-tools/image-env-to-json" }, { "id": "@kie-tools/runtime-tools-management-console-webapp" }, - { "id": "@kie-tools/runtime-tools-task-console-webapp" }, { "id": "@kie-tools-examples/ping-pong-view" }, { "id": "@kie-tools-core/envelope-bus" }, { "id": "@kie-tools-examples/ping-pong-view-angular" }, @@ -176,6 +174,7 @@ { "id": "@kie-tools/runtime-tools-swf-webapp-components" }, { "id": "@kie-tools/scesim-editor" }, { "id": "@kie-tools/scesim-marshaller" }, + { "id": "@kie-tools/scesim-editor-envelope" }, { "id": "@kie-tools/serverless-logic-web-tools" }, { "id": "@kie-tools/text-editor" }, { "id": "@kie-tools/yard-editor" }, @@ -440,11 +439,6 @@ "target": "@kie-tools/kogito-management-console", "weight": 1 }, - { - "source": "@kie-tools-examples/jbpm-compact-architecture-example", - "target": "@kie-tools/kogito-task-console", - "weight": 1 - }, { "source": "@kie-tools/kogito-management-console", "target": "@kie-tools/image-builder", @@ -460,21 +454,6 @@ "target": "@kie-tools/runtime-tools-management-console-webapp", "weight": 1 }, - { - "source": "@kie-tools/kogito-task-console", - "target": "@kie-tools/image-builder", - "weight": 1 - }, - { - "source": "@kie-tools/kogito-task-console", - "target": "@kie-tools/image-env-to-json", - "weight": 1 - }, - { - "source": "@kie-tools/kogito-task-console", - "target": "@kie-tools/runtime-tools-task-console-webapp", - "weight": 1 - }, { "source": "@kie-tools/image-builder", "target": "@kie-tools/tsconfig", @@ -505,21 +484,6 @@ "target": "@kie-tools/runtime-tools-shared-webapp-components", "weight": 1 }, - { - "source": "@kie-tools/runtime-tools-task-console-webapp", - "target": "@kie-tools-core/react-hooks", - "weight": 1 - }, - { - "source": "@kie-tools/runtime-tools-task-console-webapp", - "target": "@kie-tools/runtime-tools-process-webapp-components", - "weight": 1 - }, - { - "source": "@kie-tools/runtime-tools-task-console-webapp", - "target": "@kie-tools/runtime-tools-shared-webapp-components", - "weight": 1 - }, { "source": "@kie-tools-examples/ping-pong-view", "target": "@kie-tools-core/envelope", @@ -1955,21 +1919,41 @@ "target": "@kie-tools/sonataflow-quarkus-devui", "weight": 1 }, + { + "source": "@kie/kogito-data-index-ephemeral-image", + "target": "@kie-tools/maven-base", + "weight": 1 + }, { "source": "@kie/kogito-data-index-ephemeral-image", "target": "@kie-tools/sonataflow-image-common", "weight": 1 }, + { + "source": "@kie/kogito-data-index-postgresql-image", + "target": "@kie-tools/maven-base", + "weight": 1 + }, { "source": "@kie/kogito-data-index-postgresql-image", "target": "@kie-tools/sonataflow-image-common", "weight": 1 }, + { + "source": "@kie/kogito-jobs-service-ephemeral-image", + "target": "@kie-tools/maven-base", + "weight": 1 + }, { "source": "@kie/kogito-jobs-service-ephemeral-image", "target": "@kie-tools/sonataflow-image-common", "weight": 1 }, + { + "source": "@kie/kogito-jobs-service-postgresql-image", + "target": "@kie-tools/maven-base", + "weight": 1 + }, { "source": "@kie/kogito-jobs-service-postgresql-image", "target": "@kie-tools/sonataflow-image-common", @@ -1990,11 +1974,21 @@ "target": "@kie-tools/root-env", "weight": 1 }, + { + "source": "@kie/kogito-jit-runner-image", + "target": "@kie-tools/maven-base", + "weight": 1 + }, { "source": "@kie/kogito-jit-runner-image", "target": "@kie-tools/sonataflow-image-common", "weight": 1 }, + { + "source": "@kie/kogito-jobs-service-allinone-image", + "target": "@kie-tools/maven-base", + "weight": 1 + }, { "source": "@kie/kogito-jobs-service-allinone-image", "target": "@kie-tools/sonataflow-image-common", @@ -2060,11 +2054,6 @@ "target": "@kie-tools/kogito-management-console", "weight": 1 }, - { - "source": "@kie-tools/runtime-tools-consoles-helm-chart", - "target": "@kie-tools/kogito-task-console", - "weight": 1 - }, { "source": "@kie-tools/runtime-tools-process-enveloped-components", "target": "@kie-tools/runtime-tools-process-gateway-api", @@ -2150,6 +2139,21 @@ "target": "@kie-tools/xml-parser-ts-codegen", "weight": 1 }, + { + "source": "@kie-tools/scesim-editor-envelope", + "target": "@kie-tools-core/editor", + "weight": 1 + }, + { + "source": "@kie-tools/scesim-editor-envelope", + "target": "@kie-tools-core/react-hooks", + "weight": 1 + }, + { + "source": "@kie-tools/scesim-editor-envelope", + "target": "@kie-tools/scesim-editor", + "weight": 1 + }, { "source": "@kie-tools/serverless-logic-web-tools", "target": "@kie-tools-core/kubernetes-bridge", @@ -2661,7 +2665,6 @@ ["@kie/kogito-jobs-service-ephemeral-image", "packages/kogito-jobs-service-ephemeral-image"], ["@kie/kogito-jobs-service-postgresql-image", "packages/kogito-jobs-service-postgresql-image"], ["@kie-tools/kogito-management-console", "packages/kogito-management-console"], - ["@kie-tools/kogito-task-console", "packages/kogito-task-console"], ["@kie-tools-core/kubernetes-bridge", "packages/kubernetes-bridge"], ["@kie-tools/maven-base", "packages/maven-base"], ["@kie-tools/maven-m2-repo-via-http-image", "packages/maven-m2-repo-via-http-image"], @@ -2690,8 +2693,8 @@ ["@kie-tools/runtime-tools-swf-enveloped-components", "packages/runtime-tools-swf-enveloped-components"], ["@kie-tools/runtime-tools-swf-gateway-api", "packages/runtime-tools-swf-gateway-api"], ["@kie-tools/runtime-tools-swf-webapp-components", "packages/runtime-tools-swf-webapp-components"], - ["@kie-tools/runtime-tools-task-console-webapp", "packages/runtime-tools-task-console-webapp"], ["@kie-tools/scesim-editor", "packages/scesim-editor"], + ["@kie-tools/scesim-editor-envelope", "packages/scesim-editor-envelope"], ["@kie-tools/scesim-marshaller", "packages/scesim-marshaller"], ["@kie-tools/serverless-logic-web-tools", "packages/serverless-logic-web-tools"], [