feat(core-flows,utils): Shipping options workflow events emission (#14388)

* Shipping options workflow events type

* Emit shipping options workflow events

* add changeset
This commit is contained in:
Nicolas Gorga
2026-01-02 07:28:29 -03:00
committed by GitHub
parent 7e3ed913a6
commit bf4cc12545
5 changed files with 92 additions and 7 deletions

View File

@@ -13,6 +13,8 @@ import {
import { setShippingOptionsPriceSetsStep } from "../steps/set-shipping-options-price-sets"
import { validateFulfillmentProvidersStep } from "../steps/validate-fulfillment-providers"
import { validateShippingOptionPricesStep } from "../steps/validate-shipping-option-prices"
import { emitEventStep } from "../../common"
import { ShippingOptionWorkflowEvents } from "@medusajs/framework/utils"
/**
* The data to create the shipping options.
@@ -132,6 +134,12 @@ export const createShippingOptionsWorkflow = createWorkflow(
data.shippingOptions
)
const eventData = transform(createdShippingOptions, (data) => {
return data.map((option) => {
return { id: option.id }
})
})
const normalizedShippingOptionsPrices = transform(
{
shippingOptions: createdShippingOptions,
@@ -171,7 +179,13 @@ export const createShippingOptionsWorkflow = createWorkflow(
}
)
setShippingOptionsPriceSetsStep(normalizedLinkData)
parallelize(
setShippingOptionsPriceSetsStep(normalizedLinkData),
emitEventStep({
eventName: ShippingOptionWorkflowEvents.CREATED,
data: eventData,
})
)
return new WorkflowResponse(createdShippingOptions)
}
)

View File

@@ -1,7 +1,12 @@
import type { FulfillmentWorkflow } from "@medusajs/framework/types"
import { createWorkflow, WorkflowData } from "@medusajs/framework/workflows-sdk"
import {
createWorkflow,
parallelize,
WorkflowData,
} from "@medusajs/framework/workflows-sdk"
import { deleteShippingOptionsStep } from "../steps"
import { removeRemoteLinkStep } from "../../common"
import { emitEventStep, removeRemoteLinkStep } from "../../common"
import { ShippingOptionWorkflowEvents } from "@medusajs/framework/utils"
export const deleteShippingOptionsWorkflowId =
"delete-shipping-options-workflow"
@@ -31,6 +36,12 @@ export const deleteShippingOptionsWorkflow = createWorkflow(
) => {
const softDeletedEntities = deleteShippingOptionsStep(input.ids)
removeRemoteLinkStep(softDeletedEntities)
parallelize(
removeRemoteLinkStep(softDeletedEntities),
emitEventStep({
eventName: ShippingOptionWorkflowEvents.DELETED,
data: input.ids,
})
)
}
)

View File

@@ -12,7 +12,11 @@ import {
} from "../steps"
import { validateFulfillmentProvidersStep } from "../steps/validate-fulfillment-providers"
import { validateShippingOptionPricesStep } from "../steps/validate-shipping-option-prices"
import { ShippingOptionPriceType } from "@medusajs/framework/utils"
import {
ShippingOptionPriceType,
ShippingOptionWorkflowEvents,
} from "@medusajs/framework/utils"
import { emitEventStep } from "../../common"
/**
* The data to update the shipping options.
@@ -92,6 +96,10 @@ export const updateShippingOptionsWorkflow = createWorkflow(
data.shippingOptions
)
const eventData = transform(updatedShippingOptions, (data) => {
return data.map((option) => option.id)
})
const normalizedShippingOptionsPrices = transform(
{
shippingOptions: updatedShippingOptions,
@@ -115,8 +123,14 @@ export const updateShippingOptionsWorkflow = createWorkflow(
}
)
setShippingOptionsPricesStep(
normalizedShippingOptionsPrices.shippingOptionsPrices
parallelize(
setShippingOptionsPricesStep(
normalizedShippingOptionsPrices.shippingOptionsPrices
),
emitEventStep({
eventName: ShippingOptionWorkflowEvents.UPDATED,
data: eventData,
})
)
return new WorkflowResponse(updatedShippingOptions)

View File

@@ -861,6 +861,46 @@ export const ShippingOptionTypeWorkflowEvents = {
DELETED: "shipping-option-type.deleted",
}
/**
* @category Shipping Option
* @customNamespace Fulfillment
*/
export const ShippingOptionWorkflowEvents = {
/**
* Emitted when shipping options are created.
*
* @eventPayload
* ```ts
* {
* id, // The ID of the shipping option
* }
* ```
*/
CREATED: "shipping-option.created",
/**
* Emitted when shipping options are updated.
*
* @eventPayload
* ```ts
* {
* id, // The ID of the shipping option
* }
* ```
*/
UPDATED: "shipping-option.updated",
/**
* Emitted when shipping options are deleted.
*
* @eventPayload
* ```ts
* {
* id, // The ID of the shipping option
* }
* ```
*/
DELETED: "shipping-option.deleted",
}
/**
* @category Payment
* @customNamespace Payment