Skip to content

Commit 93b38bf

Browse files
authored
fix: do not pass additional_data to service (#9532)
Fixes: FRMW-2743 This PR extracts and removes the `additional_data` from the workflow input before calling the steps and hence the `additional_data` is not passed down to the service layer. However, this bug has made me discover one inconsistency in the input structure of certain workflows. ✅ **Following is the input structure of the `updateProductsWorkflow`**. Here, we accept the `products` and the `additional_data` as two separate top-level properties. ```ts // Shape export type UpdateProductsWorkflowInputSelector = { selector: ProductTypes.FilterableProductProps update: Omit<ProductTypes.UpdateProductDTO, "variants"> & { sales_channels?: { id: string }[] variants?: UpdateProductVariantWorkflowInputDTO[] } } & AdditionalData // Calling the workflow const { result } = await updateProductsWorkflow(req.scope).run({ input: { selector: { id: req.params.id }, update, additional_data, }, }) ``` ❌ **Following in the input structure of the `updateCartWorflow`**. In this case, we are accepting the cart properties at the top-level, hence the `additional_data` is merged within those properties, increasing the chance of passing it down to the service layer by mistake. ```ts // Shape WorkflowData<UpdateCartWorkflowInputDTO & AdditionalData> // Calling the workflow await workflow.run({ input: { ...req.validatedBody // Additional data is part of the validatedBody, id: req.params.id, }, }) ``` Ideally, the input of `updateCartWorkflow` should look as follows. ```ts WorkflowData<{ cart: UpdateCartWorkflowInputDTO } & AdditionalData> ```
1 parent c8b375a commit 93b38bf

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

packages/core/core-flows/src/cart/workflows/update-cart.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,11 @@ export const updateCartWorkflow = createWorkflow(
6868
const cartInput = transform(
6969
{ input, region, customerData, salesChannel, cartToUpdate },
7070
(data) => {
71-
const { promo_codes, ...updateCartData } = data.input
71+
const {
72+
promo_codes,
73+
additional_data: _,
74+
...updateCartData
75+
} = data.input
7276

7377
const data_ = {
7478
...updateCartData,

0 commit comments

Comments
 (0)