Repository: mycloudnexus/kraken
Pull request #608: fix(sdk): fix sellerContact issue in workflow
Author: login: zhiyaoPCCW
Created: 2025-03-25T09:18:19Z | Merged: 2025-03-26T05:17:20Z

<!-- Provide a general summary of your changes in the Title above -->

## Description
 fix sellerContact issue in workflow
<!-- Describe your changes in detail -->

## Related Issue
https://github.com/mycloudnexus/kraken/issues/597#issue-2942213208
<!-- This project only accepts pull requests related to open issues. -->
<!-- If suggesting a new feature or change, please discuss it in an issue first. -->
<!-- If fixing a bug, there should be an issue describing it with steps to reproduce. -->
<!-- Please link to the issue here. -->

## Motivation and Context

<!-- Why is this change required? What problem does it solve? -->

## How This Has Been Tested

<!-- Please describe in detail how you tested your changes -->
<!-- Include details of your testing environment, and the tests -->
<!-- you ran to see how your change affects other areas of the code, etc. -->
<!-- This information is helpful for reviewers and QA. -->

## Screenshots (if appropriate)

## Types of changes

<!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->

- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
- [ ] Refactoring or add test (improvements in base code or adds test coverage to functionality)
- [ ] CI/CD or documentation update (changes to CI/CD pipeline or documentation)

## Self Checklist

<!-- Go over all the following points, and put an `x` in all the boxes that apply -->
<!-- If there are no documentation updates required, mark the item as checked. -->
<!-- Raise up any additional concerns not covered by the checklist. -->

- [x] I ensured that I are not pushing configuration files containing sensitive information such as testing keys.
- [x] I ensured that large PR is avoided,  Consider splitting if there are more than 500 line changes, In addition to line count, also consider the number of files being affected, An ideal amount is less than 10, 25-30 is generally too large with the exception of library upgrades, refactors, etc.
- [x] I ensured that If the PR is inevitably large, a short PR review meeting or discuss with reviewers will be organized.
- [x] I ensured that If the PR is to resolve a blocker, do not make unrelated changes in the same PR e.g. formatting changes, to minimize review time.
- [x] I ensured that PR is focused
- [x] I ensured that context was given in the PR description, Include a clear description of the changes
- [x] I ensured that related github issues are linked, Include screenshots if this will make the context clearer for the reviewer
- [x] I ensured that "work in progress" or "hold" labels are removed
- [x] I ensured that adherence to style guidelines
- [x] I ensured that feature flag is applied if needed
- [x] I ensured that follow secure development practices
- [x] I ensured that no secrets or sensitive data have been committed or logged
- [x] I ensured that no hardcoded values that may change depending on environment (these should be configured dynamically e.g. through environment variables, from the db etc)



Diff:
diff --git a/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/AbstractActionRunner.java b/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/AbstractActionRunner.java
index dd1b7fd9f..5e145b3a0 100644
--- a/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/AbstractActionRunner.java
+++ b/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/AbstractActionRunner.java
@@ -12,6 +12,7 @@
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.MapUtils;
 import org.springframework.web.server.ServerWebExchange;
 
 @Getter
@@ -20,6 +21,7 @@
 public abstract class AbstractActionRunner implements ResponseCodeTransform, MappingTransformer {
 
   public static final String ATTRIBUTE_KEY_PREFIX = "x-kraken-";
+  public static final String ENV = "env";
 
   private final AppProperty appProperty;
 
@@ -69,7 +71,11 @@ public static Optional<Map<String, Object>> generateActionContext(
       ServerWebExchange exchange, ComponentAPIFacets.Action action, Map<String, Object> env) {
 
     Map<String, Object> context = new HashMap<>();
-    if (env != null) context.put("env", env);
+    if (MapUtils.isNotEmpty(env)) {
+      context.put(ENV, env);
+    } else if (exchange.getAttributes().containsKey(ENV)) {
+      context.put(ENV, exchange.getAttributes().get(ENV));
+    }
 
     flowToContext(exchange, context, KrakenFilterConstants.X_ORIGINAL_REQUEST_BODY, "body");
 
diff --git a/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/LoadTargetAPIConfigActionRunner.java b/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/LoadTargetAPIConfigActionRunner.java
index 91967d4a4..f7de7ae48 100644
--- a/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/LoadTargetAPIConfigActionRunner.java
+++ b/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/LoadTargetAPIConfigActionRunner.java
@@ -84,7 +84,7 @@ public Optional<ServerWebExchange> runIt(
 
     StateValueMappingDto stateValueMappingDto = new StateValueMappingDto();
     // replace env.seller if the seller contact key exists
-    inject(inputs, asset.getMetadata().getKey());
+    inject(exchange, inputs, asset.getMetadata().getKey());
     if (facets.getWorkflow() != null && facets.getWorkflow().isEnabled()) {
       UnifiedAssetDto workflowAsset = unifiedAssetService.findOne(facets.getWorkflow().getKey());
       ComponentWorkflowFacets workflowFacts =
diff --git a/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/SellerContactInjector.java b/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/SellerContactInjector.java
index 4741cd492..6341641ab 100644
--- a/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/SellerContactInjector.java
+++ b/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/SellerContactInjector.java
@@ -14,13 +14,14 @@
 import com.fasterxml.jackson.core.type.TypeReference;
 import java.util.*;
 import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.web.server.ServerWebExchange;
 
 public interface SellerContactInjector extends ApiUseCaseSelector, AssetKeyGenerator {
   String SELLER_KEY_WORD = "seller";
 
   UnifiedAssetService getUnifiedAssetService();
 
-  default void inject(Map<String, Object> inputs, String targetKey) {
+  default void inject(ServerWebExchange exchange, Map<String, Object> inputs, String targetKey) {
     Optional<ApiUseCaseDto> apiUseCaseDtoOptional = findRelatedApiUse(targetKey, findApiUseCase());
     if (apiUseCaseDtoOptional.isEmpty()) {
       return;
@@ -56,5 +57,12 @@ default void inject(Map<String, Object> inputs, String targetKey) {
     currentSeller.setRole(sellerInfo.getRole());
     envMap.put(SELLER_KEY_WORD, currentSeller);
     inputs.put(ENV, envMap);
+    if (exchange.getAttributes().containsKey(ENV)) {
+      Map<String, Object> env = (Map<String, Object>) exchange.getAttributes().get(ENV);
+      env.put(SELLER_KEY_WORD, currentSeller);
+      exchange.getAttributes().put(ENV, env);
+    } else {
+      exchange.getAttributes().put(ENV, envMap);
+    }
   }
 }
diff --git a/kraken-java-sdk/kraken-java-sdk-gateway/src/test/java/com/consoleconnect/kraken/operator/gateway/service/SellerContactInjectorTest.java b/kraken-java-sdk/kraken-java-sdk-gateway/src/test/java/com/consoleconnect/kraken/operator/gateway/service/SellerContactInjectorTest.java
index af9826dc1..923fad5df 100644
--- a/kraken-java-sdk/kraken-java-sdk-gateway/src/test/java/com/consoleconnect/kraken/operator/gateway/service/SellerContactInjectorTest.java
+++ b/kraken-java-sdk/kraken-java-sdk-gateway/src/test/java/com/consoleconnect/kraken/operator/gateway/service/SellerContactInjectorTest.java
@@ -1,8 +1,7 @@
 package com.consoleconnect.kraken.operator.gateway.service;
 
 import static com.consoleconnect.kraken.operator.core.enums.AssetKindEnum.COMPONENT_SELLER_CONTACT;
-import static com.consoleconnect.kraken.operator.core.toolkit.Constants.ORDER_KEY_WORD;
-import static com.consoleconnect.kraken.operator.core.toolkit.Constants.QUOTE_KEY_WORD;
+import static com.consoleconnect.kraken.operator.core.toolkit.Constants.*;
 import static com.jayway.jsonpath.matchers.JsonPathMatchers.hasJsonPath;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.equalTo;
@@ -27,8 +26,12 @@
 import lombok.extern.slf4j.Slf4j;
 import org.jetbrains.annotations.NotNull;
 import org.junit.jupiter.api.*;
+import org.mockito.Mockito;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
+import org.springframework.mock.web.server.MockServerWebExchange;
 import org.springframework.test.context.ContextConfiguration;
+import org.springframework.web.server.ServerWebExchange;
 
 @Slf4j
 @MockIntegrationTest
@@ -46,7 +49,8 @@ public UnifiedAssetService getUnifiedAssetService() {
   @Order(1)
   void givenNotExistedTargetKey_whenInjection_thenReturnDirectly() {
     Map<String, Object> inputs = buildInputs();
-    inject(inputs, "mef.sonata.api-target.order.eline.add1");
+    ServerWebExchange exchange = Mockito.mock(ServerWebExchange.class);
+    inject(exchange, inputs, "mef.sonata.api-target.order.eline.add1");
     String bodyStr = JsonToolkit.toJson(inputs);
     log.info(bodyStr);
     assertThat(bodyStr, hasJsonPath("$.env.seller", notNullValue()));
@@ -60,7 +64,7 @@ void givenNotExistedTargetKey_whenInjection_thenReturnDirectly() {
   @Order(2)
   void givenNotExistSellerContactKey_whenInjection_thenReturnOK() {
     Map<String, Object> inputs = buildInputs();
-    inject(inputs, "mef.sonata.api-target.order.eline.add");
+    inject(Mockito.mock(ServerWebExchange.class), inputs, "mef.sonata.api-target.order.eline.add");
     String bodyStr = JsonToolkit.toJson(inputs);
     log.info(bodyStr);
     assertThat(bodyStr, hasJsonPath("$.env.seller", notNullValue()));
@@ -85,8 +89,10 @@ void givenExistedSellerContact_whenInjection_thenReturnOK() {
         unifiedAssetService.syncAsset(productId, sellerContactAsset, syncMetadata, true);
     Assertions.assertNotNull(ingestionDataResult);
     Map<String, Object> inputs = buildInputs();
-
-    inject(inputs, "mef.sonata.api-target.order.eline.add");
+    ServerWebExchange exchange =
+        MockServerWebExchange.from(MockServerHttpRequest.get("/test").build());
+    exchange.getAttributes().put(ENV, new HashMap<>());
+    inject(exchange, inputs, "mef.sonata.api-target.order.eline.add");
     String bodyStr = JsonToolkit.toJson(inputs);
     log.info(bodyStr);
     assertThat(bodyStr, hasJsonPath("$.env.seller", notNullValue()));
@@ -94,6 +100,12 @@ void givenExistedSellerContact_whenInjection_thenReturnOK() {
     assertThat(bodyStr, hasJsonPath("$.env.seller.role", notNullValue()));
     assertThat(bodyStr, hasJsonPath("$.env.seller.emailAddress", notNullValue()));
     assertThat(bodyStr, hasJsonPath("$.env.seller.name", equalTo("test-new-seller-contact")));
+    ServerWebExchange exchange1 =
+        MockServerWebExchange.from(MockServerHttpRequest.get("/test").build());
+    inject(exchange1, inputs, "mef.sonata.api-target.order.eline.add");
+    assertThat(
+        JsonToolkit.toJson(exchange.getAttributes().get("env")),
+        hasJsonPath("$.seller.name", equalTo("test-new-seller-contact")));
   }
 
   private UnifiedAsset createSellerContact(
diff --git a/kraken-java-sdk/kraken-java-sdk-mef/src/main/resources/mef-sonata/api-targets-mappers/api-target-mapper.order.eline.read.modify.yaml b/kraken-java-sdk/kraken-java-sdk-mef/src/main/resources/mef-sonata/api-targets-mappers/api-target-mapper.order.eline.read.modify.yaml
index 13404e6b5..7de0f0922 100644
--- a/kraken-java-sdk/kraken-java-sdk-mef/src/main/resources/mef-sonata/api-targets-mappers/api-target-mapper.order.eline.read.modify.yaml
+++ b/kraken-java-sdk/kraken-java-sdk-mef/src/main/resources/mef-sonata/api-targets-mappers/api-target-mapper.order.eline.read.modify.yaml
@@ -2,8 +2,8 @@
 kind: kraken.component.api-target-mapper
 apiVersion: v1
 metadata:
-  key: mef.sonata.api-target-mapper.order.eline.read.delete
-  name:  Mapper Of Reading Order Connection with Delete Action
+  key: mef.sonata.api-target-mapper.order.eline.read.modify
+  name:  Mapper Of Reading Order Connection with Modify Action
   description: This operation retrieves a ProductOrder entity
 spec:
   trigger:
diff --git a/kraken-java-sdk/kraken-java-sdk-mef/src/main/resources/mef-sonata/api-targets/api-target.order.eline.delete.yaml b/kraken-java-sdk/kraken-java-sdk-mef/src/main/resources/mef-sonata/api-targets/api-target.order.eline.delete.yaml
index b25a9f42f..50b476ce5 100644
--- a/kraken-java-sdk/kraken-java-sdk-mef/src/main/resources/mef-sonata/api-targets/api-target.order.eline.delete.yaml
+++ b/kraken-java-sdk/kraken-java-sdk-mef/src/main/resources/mef-sonata/api-targets/api-target.order.eline.delete.yaml
@@ -22,9 +22,49 @@ spec:
       method: ""
       responseBody: |
         {
-          "id":"${entity.id}",
           "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}",
-          "productOrderItem": "${mefRequestBody.productOrderItem}",
+          "id": "${entity.id}",
           "orderDate":"${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}",
-          "state": "acknowledged"
+          "productOrderItem": [{
+            "action": "${mefRequestBody.productOrderItem[0].action}",
+            "agreementName": "${mefRequestBody.productOrderItem[0].agreementName}",
+            "billingAccount": "${mefRequestBody.productOrderItem[0].billingAccount}",
+            "coordinatedAction": "${mefRequestBody.productOrderItem[0].coordinatedAction}",
+            "endCustomerName": "${mefRequestBody.productOrderItem[0].endCustomerName}",
+            "expediteIndicator": "${mefRequestBody.productOrderItem[0].expediteIndicator}",
+            "id": "${mefRequestBody.productOrderItem[0].id}",
+            "expectedCompletionDate": "${mefRequestBody.productOrderItem[0].expectedCompletionDate}",
+            "note": "${mefRequestBody.productOrderItem[0].note}",
+            "product": {
+              "productOffering": "${mefRequestBody.productOrderItem[0].product.productOffering}",
+              "productConfiguration": "${mefRequestBody.productOrderItem[0].product.productConfiguration}",
+              "productRelationship": "${mefRequestBody.productOrderItem[0].product.productRelationship}",
+              "place": "${mefRequestBody.productOrderItem[0].product.place}",
+              "href": "${mefRequestBody.productOrderItem[0].product.href}",
+              "id": "${mefRequestBody.productOrderItem[0].product.id}"
+            },
+            "itemTerm": {
+              "duration": {
+                "amount": "${mefRequestBody.productOrderItem[0].requestedItemTerm.duration.amount}",
+                "units": "${mefRequestBody.productOrderItem[0].requestedItemTerm.duration.units}"
+              }
+            },
+            "productOfferingQualificationItem": "${mefRequestBody.productOrderItem[0].productOfferingQualificationItem}",
+            "productOrderItemRelationship": "${mefRequestBody.productOrderItem[0].productOrderItemRelationship}",
+            "quoteItem": "${mefRequestBody.productOrderItem[0].quoteItem}",
+            "relatedBuyerPON": "${mefRequestBody.productOrderItem[0].relatedBuyerPON}",
+            "relatedContactInformation": "${mefRequestBody.productOrderItem[0].relatedContactInformation}",
+            "requestedCompletionDate": "${mefRequestBody.productOrderItem[0].requestedCompletionDate}",
+            "requestedItemTerm": "${mefRequestBody.productOrderItem[0].requestedItemTerm}",
+            "tspRestorationPriority": "${mefRequestBody.productOrderItem[0].tspRestorationPriority}",
+            "charge": "${mefRequestBody.productOrderItem[0].charge}",
+            "completionDate": "((mefResponseBody.state=='completed'?mefResponseBody.completionDate:null))",
+            "expectedCompletionDate": "${mefRequestBody.productOrderItem[0].requestedCompletionDate}",
+            "expediteAcceptedIndicator": "${mefRequestBody.productOrderItem[0].expediteIndicator}",
+            "milestone": "${mefRequestBody.productOrderItem[0].milestone}",
+            "state": "((mefResponseBody.state))",
+            "terminationError": "${mefRequestBody.productOrderItem[0].terminationError}"
+          }],
+          "state": "acknowledged",
+          "orderId": ""
         }
\ No newline at end of file
diff --git a/kraken-java-sdk/kraken-java-sdk-mef/src/main/resources/mef-sonata/product.yaml b/kraken-java-sdk/kraken-java-sdk-mef/src/main/resources/mef-sonata/product.yaml
index 5a1aceabd..685bf17cd 100644
--- a/kraken-java-sdk/kraken-java-sdk-mef/src/main/resources/mef-sonata/product.yaml
+++ b/kraken-java-sdk/kraken-java-sdk-mef/src/main/resources/mef-sonata/product.yaml
@@ -109,7 +109,7 @@ spec:
     - classpath:/mef-sonata/api-workflow/api-workflow.order.uni.delete.yaml
     - classpath:/mef-sonata/api-workflow/api-workflow.order.uni.add.yaml
     - classpath:/mef-sonata/api-workflow/api-workflow.order.eline.add.yaml
-    - classpath:/mef-sonata/template-upgrade/release.1.7.29.yaml
+    - classpath:/mef-sonata/template-upgrade/release.1.7.31.yaml
 
   templateUpgradePaths:
     - classpath:/mef-sonata/apis/api.address.yaml
diff --git a/kraken-java-sdk/kraken-java-sdk-mef/src/main/resources/mef-sonata/template-upgrade/release.1.7.31.yaml b/kraken-java-sdk/kraken-java-sdk-mef/src/main/resources/mef-sonata/template-upgrade/release.1.7.31.yaml
new file mode 100644
index 000000000..e13f72821
--- /dev/null
+++ b/kraken-java-sdk/kraken-java-sdk-mef/src/main/resources/mef-sonata/template-upgrade/release.1.7.31.yaml
@@ -0,0 +1,13 @@
+---
+kind: kraken.product.template-upgrade
+apiVersion: v1
+metadata:
+  key: kraken.product.template-upgrade.1.7.31
+  name: V1.7.31
+  labels:
+    productSpec: grace
+    productVersion: V1.7.31
+    publishDate: 2025-03-26
+  description: |
+    Change eline modify template
+  version: 1
\ No newline at end of file


Reviews:
user: login: michaeltangpub2
body: Good to me
state: DISMISSED
author_association: CONTRIBUTOR
submitted_at: 2025-03-25T10:28:57Z
user: login: xuelianhan007
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-25T13:00:59Z
user: login: zhiyaoPCCW
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-26T01:51:54Z
user: login: kuangxiang20240501
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-26T03:15:21Z
user: login: michaeltangpub2
body: Good to me
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-03-26T05:06:26Z
user: login: xuelianhan007
body: GOOD
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-03-26T05:11:30Z

Review comments:
diff_hunk: @@ -56,5 +57,6 @@ default void inject(Map<String, Object> inputs, String targetKey) {
     currentSeller.setRole(sellerInfo.getRole());
     envMap.put(SELLER_KEY_WORD, currentSeller);
     inputs.put(ENV, envMap);
+    exchange.getAttributes().put(ENV, envMap);
path: kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/SellerContactInjector.java
user: login: xuelianhan007
body: It seems that your purpose is to pass the seller, but this action extend to all the env which has many variables you don't need in fact.

created_at: 2025-03-25T13:00:33Z
author_association: CONTRIBUTOR
diff_hunk: @@ -56,5 +57,6 @@ default void inject(Map<String, Object> inputs, String targetKey) {
     currentSeller.setRole(sellerInfo.getRole());
     envMap.put(SELLER_KEY_WORD, currentSeller);
     inputs.put(ENV, envMap);
+    exchange.getAttributes().put(ENV, envMap);
path: kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/SellerContactInjector.java
user: login: zhiyaoPCCW
body: fixed
created_at: 2025-03-26T01:51:54Z
author_association: CONTRIBUTOR
path: kraken-java-sdk/kraken-java-sdk-mef/src/main/resources/mef-sonata/template-upgrade/release.1.7.30.yaml
user: login: kuangxiang20240501
body: Does this file 1.7.30.yaml need to be deleted? Another one 1.7.31 existed.
created_at: 2025-03-26T03:15:21Z
author_association: CONTRIBUTOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-03-25T09:18:45Z
body: ### Library Vulnerability scan results
The following vulnerabilities have been found in libraries included in the repository (some might be dependencies of dependencies).

**Critical** :red_circle: and **High** :yellow_circle: severity vulnerabilities **must** be fixed before the PR can be merged, even if they are dependencies of dependencies.

| Library | Vulnerable version | Severity | Fix version | Vulnerability ID |
| ------------ | ------------ | ------------ | ------------ | ------------ |
| @babel/helpers | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime-corejs3 | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| dompurify | 3.1.7 | Medium | 3.2.4 | [GHSA-vhxf-7vqr-mrjg](https://github.com/advisories/GHSA-vhxf-7vqr-mrjg) |
| esbuild | 0.24.0 | Medium | 0.25.0 | [GHSA-67mh-4wv8-2f99](https://github.com/advisories/GHSA-67mh-4wv8-2f99) |
| nanoid | 3.3.7 | Medium | 3.3.8 | [GHSA-mwcw-c2x4-8c55](https://github.com/advisories/GHSA-mwcw-c2x4-8c55) |
| vite | 5.4.9 | Medium | 5.4.12 | [GHSA-vg6x-rcgg-rjx6](https://github.com/advisories/GHSA-vg6x-rcgg-rjx6) |

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-03-25T10:16:45Z
body: ### Library Vulnerability scan results
The following vulnerabilities have been found in libraries included in the repository (some might be dependencies of dependencies).

**Critical** :red_circle: and **High** :yellow_circle: severity vulnerabilities **must** be fixed before the PR can be merged, even if they are dependencies of dependencies.

| Library | Vulnerable version | Severity | Fix version | Vulnerability ID |
| ------------ | ------------ | ------------ | ------------ | ------------ |
| @babel/helpers | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime-corejs3 | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| dompurify | 3.1.7 | Medium | 3.2.4 | [GHSA-vhxf-7vqr-mrjg](https://github.com/advisories/GHSA-vhxf-7vqr-mrjg) |
| esbuild | 0.24.0 | Medium | 0.25.0 | [GHSA-67mh-4wv8-2f99](https://github.com/advisories/GHSA-67mh-4wv8-2f99) |
| nanoid | 3.3.7 | Medium | 3.3.8 | [GHSA-mwcw-c2x4-8c55](https://github.com/advisories/GHSA-mwcw-c2x4-8c55) |
| vite | 5.4.9 | Medium | 5.4.12 | [GHSA-vg6x-rcgg-rjx6](https://github.com/advisories/GHSA-vg6x-rcgg-rjx6) |

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-03-26T01:53:15Z
body: ### Library Vulnerability scan results
The following vulnerabilities have been found in libraries included in the repository (some might be dependencies of dependencies).

**Critical** :red_circle: and **High** :yellow_circle: severity vulnerabilities **must** be fixed before the PR can be merged, even if they are dependencies of dependencies.

| Library | Vulnerable version | Severity | Fix version | Vulnerability ID |
| ------------ | ------------ | ------------ | ------------ | ------------ |
| @babel/helpers | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime-corejs3 | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| dompurify | 3.1.7 | Medium | 3.2.4 | [GHSA-vhxf-7vqr-mrjg](https://github.com/advisories/GHSA-vhxf-7vqr-mrjg) |
| esbuild | 0.24.0 | Medium | 0.25.0 | [GHSA-67mh-4wv8-2f99](https://github.com/advisories/GHSA-67mh-4wv8-2f99) |
| nanoid | 3.3.7 | Medium | 3.3.8 | [GHSA-mwcw-c2x4-8c55](https://github.com/advisories/GHSA-mwcw-c2x4-8c55) |
| vite | 5.4.9 | Medium | 5.4.12 | [GHSA-vg6x-rcgg-rjx6](https://github.com/advisories/GHSA-vg6x-rcgg-rjx6) |

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-03-26T01:59:11Z
body: ### Library Vulnerability scan results
The following vulnerabilities have been found in libraries included in the repository (some might be dependencies of dependencies).

**Critical** :red_circle: and **High** :yellow_circle: severity vulnerabilities **must** be fixed before the PR can be merged, even if they are dependencies of dependencies.

| Library | Vulnerable version | Severity | Fix version | Vulnerability ID |
| ------------ | ------------ | ------------ | ------------ | ------------ |
| @babel/helpers | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime-corejs3 | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| dompurify | 3.1.7 | Medium | 3.2.4 | [GHSA-vhxf-7vqr-mrjg](https://github.com/advisories/GHSA-vhxf-7vqr-mrjg) |
| esbuild | 0.24.0 | Medium | 0.25.0 | [GHSA-67mh-4wv8-2f99](https://github.com/advisories/GHSA-67mh-4wv8-2f99) |
| nanoid | 3.3.7 | Medium | 3.3.8 | [GHSA-mwcw-c2x4-8c55](https://github.com/advisories/GHSA-mwcw-c2x4-8c55) |
| vite | 5.4.9 | Medium | 5.4.12 | [GHSA-vg6x-rcgg-rjx6](https://github.com/advisories/GHSA-vg6x-rcgg-rjx6) |

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-03-26T02:01:23Z
body: ### Library Vulnerability scan results
The following vulnerabilities have been found in libraries included in the repository (some might be dependencies of dependencies).

**Critical** :red_circle: and **High** :yellow_circle: severity vulnerabilities **must** be fixed before the PR can be merged, even if they are dependencies of dependencies.

| Library | Vulnerable version | Severity | Fix version | Vulnerability ID |
| ------------ | ------------ | ------------ | ------------ | ------------ |
| @babel/helpers | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime-corejs3 | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| dompurify | 3.1.7 | Medium | 3.2.4 | [GHSA-vhxf-7vqr-mrjg](https://github.com/advisories/GHSA-vhxf-7vqr-mrjg) |
| esbuild | 0.24.0 | Medium | 0.25.0 | [GHSA-67mh-4wv8-2f99](https://github.com/advisories/GHSA-67mh-4wv8-2f99) |
| nanoid | 3.3.7 | Medium | 3.3.8 | [GHSA-mwcw-c2x4-8c55](https://github.com/advisories/GHSA-mwcw-c2x4-8c55) |
| vite | 5.4.9 | Medium | 5.4.12 | [GHSA-vg6x-rcgg-rjx6](https://github.com/advisories/GHSA-vg6x-rcgg-rjx6) |

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-03-26T02:41:58Z
body: ### Library Vulnerability scan results
The following vulnerabilities have been found in libraries included in the repository (some might be dependencies of dependencies).

**Critical** :red_circle: and **High** :yellow_circle: severity vulnerabilities **must** be fixed before the PR can be merged, even if they are dependencies of dependencies.

| Library | Vulnerable version | Severity | Fix version | Vulnerability ID |
| ------------ | ------------ | ------------ | ------------ | ------------ |
| @babel/helpers | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime-corejs3 | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| dompurify | 3.1.7 | Medium | 3.2.4 | [GHSA-vhxf-7vqr-mrjg](https://github.com/advisories/GHSA-vhxf-7vqr-mrjg) |
| esbuild | 0.24.0 | Medium | 0.25.0 | [GHSA-67mh-4wv8-2f99](https://github.com/advisories/GHSA-67mh-4wv8-2f99) |
| nanoid | 3.3.7 | Medium | 3.3.8 | [GHSA-mwcw-c2x4-8c55](https://github.com/advisories/GHSA-mwcw-c2x4-8c55) |
| vite | 5.4.9 | Medium | 5.4.12 | [GHSA-vg6x-rcgg-rjx6](https://github.com/advisories/GHSA-vg6x-rcgg-rjx6) |

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-03-26T03:06:54Z
body: ### Library Vulnerability scan results
The following vulnerabilities have been found in libraries included in the repository (some might be dependencies of dependencies).

**Critical** :red_circle: and **High** :yellow_circle: severity vulnerabilities **must** be fixed before the PR can be merged, even if they are dependencies of dependencies.

| Library | Vulnerable version | Severity | Fix version | Vulnerability ID |
| ------------ | ------------ | ------------ | ------------ | ------------ |
| @babel/helpers | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime-corejs3 | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| dompurify | 3.1.7 | Medium | 3.2.4 | [GHSA-vhxf-7vqr-mrjg](https://github.com/advisories/GHSA-vhxf-7vqr-mrjg) |
| esbuild | 0.24.0 | Medium | 0.25.0 | [GHSA-67mh-4wv8-2f99](https://github.com/advisories/GHSA-67mh-4wv8-2f99) |
| nanoid | 3.3.7 | Medium | 3.3.8 | [GHSA-mwcw-c2x4-8c55](https://github.com/advisories/GHSA-mwcw-c2x4-8c55) |
| vite | 5.4.9 | Medium | 5.4.12 | [GHSA-vg6x-rcgg-rjx6](https://github.com/advisories/GHSA-vg6x-rcgg-rjx6) |

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-03-26T03:22:34Z
body: ### Library Vulnerability scan results
The following vulnerabilities have been found in libraries included in the repository (some might be dependencies of dependencies).

**Critical** :red_circle: and **High** :yellow_circle: severity vulnerabilities **must** be fixed before the PR can be merged, even if they are dependencies of dependencies.

| Library | Vulnerable version | Severity | Fix version | Vulnerability ID |
| ------------ | ------------ | ------------ | ------------ | ------------ |
| @babel/helpers | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime-corejs3 | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| dompurify | 3.1.7 | Medium | 3.2.4 | [GHSA-vhxf-7vqr-mrjg](https://github.com/advisories/GHSA-vhxf-7vqr-mrjg) |
| esbuild | 0.24.0 | Medium | 0.25.0 | [GHSA-67mh-4wv8-2f99](https://github.com/advisories/GHSA-67mh-4wv8-2f99) |
| nanoid | 3.3.7 | Medium | 3.3.8 | [GHSA-mwcw-c2x4-8c55](https://github.com/advisories/GHSA-mwcw-c2x4-8c55) |
| vite | 5.4.9 | Medium | 5.4.12 | [GHSA-vg6x-rcgg-rjx6](https://github.com/advisories/GHSA-vg6x-rcgg-rjx6) |

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-03-26T03:38:49Z
body: ### Library Vulnerability scan results
The following vulnerabilities have been found in libraries included in the repository (some might be dependencies of dependencies).

**Critical** :red_circle: and **High** :yellow_circle: severity vulnerabilities **must** be fixed before the PR can be merged, even if they are dependencies of dependencies.

| Library | Vulnerable version | Severity | Fix version | Vulnerability ID |
| ------------ | ------------ | ------------ | ------------ | ------------ |
| @babel/helpers | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| @babel/runtime-corejs3 | 7.25.7 | Medium | 7.26.10 | [GHSA-968p-4wvh-cqc8](https://github.com/advisories/GHSA-968p-4wvh-cqc8) |
| dompurify | 3.1.7 | Medium | 3.2.4 | [GHSA-vhxf-7vqr-mrjg](https://github.com/advisories/GHSA-vhxf-7vqr-mrjg) |
| esbuild | 0.24.0 | Medium | 0.25.0 | [GHSA-67mh-4wv8-2f99](https://github.com/advisories/GHSA-67mh-4wv8-2f99) |
| nanoid | 3.3.7 | Medium | 3.3.8 | [GHSA-mwcw-c2x4-8c55](https://github.com/advisories/GHSA-mwcw-c2x4-8c55) |
| vite | 5.4.9 | Medium | 5.4.12 | [GHSA-vg6x-rcgg-rjx6](https://github.com/advisories/GHSA-vg6x-rcgg-rjx6) |

author_association: CONTRIBUTOR
user: login: sonarqubecloud[bot]
created_at: 2025-03-26T03:41:37Z
body: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=mycloudnexus_kraken_nodejs&pullRequest=608) **Quality Gate passed for 'kraken_nodejs'**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=mycloudnexus_kraken_nodejs&pullRequest=608&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=mycloudnexus_kraken_nodejs&pullRequest=608&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=mycloudnexus_kraken_nodejs&pullRequest=608&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=mycloudnexus_kraken_nodejs&pullRequest=608&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=mycloudnexus_kraken_nodejs&pullRequest=608&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=mycloudnexus_kraken_nodejs&pullRequest=608)


author_association: NONE
user: login: sonarqubecloud[bot]
created_at: 2025-03-26T03:46:44Z
body: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=mycloudnexus_kraken_java&pullRequest=608) **Quality Gate passed for 'kraken_java'**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=mycloudnexus_kraken_java&pullRequest=608&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=mycloudnexus_kraken_java&pullRequest=608&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=mycloudnexus_kraken_java&pullRequest=608&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [88.2% Coverage on New Code](https://sonarcloud.io/component_measures?id=mycloudnexus_kraken_java&pullRequest=608&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=mycloudnexus_kraken_java&pullRequest=608&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=mycloudnexus_kraken_java&pullRequest=608)


author_association: NONE