From 571f0c76292b71a77ab505f4a45b1477a993fafc Mon Sep 17 00:00:00 2001 From: "Carlos R. L. Rodrigues" <37986729+carlos-r-l-rodrigues@users.noreply.github.com> Date: Mon, 26 Aug 2024 18:38:30 -0300 Subject: [PATCH] chore(core-flows): product events (#8769) --- .../http/__tests__/claims/claims.spec.ts | 104 ++++++++++++++++++ .../src/cart/workflows/complete-cart.ts | 7 +- .../core-flows/src/common/steps/emit-event.ts | 19 ++-- .../workflows/create-product-categories.ts | 25 ++++- .../workflows/delete-product-categories.ts | 24 +++- .../workflows/update-product-categories.ts | 25 ++++- .../product/workflows/create-collections.ts | 15 +++ .../workflows/create-product-variants.ts | 14 ++- .../src/product/workflows/create-products.ts | 14 ++- .../product/workflows/delete-collections.ts | 15 +++ .../workflows/delete-product-variants.ts | 21 +++- .../src/product/workflows/delete-products.ts | 19 +++- .../product/workflows/update-collections.ts | 18 +++ .../workflows/update-product-variants.ts | 19 +++- .../src/product/workflows/update-products.ts | 27 ++++- packages/core/utils/src/order/events.ts | 2 +- packages/core/utils/src/product/events.ts | 24 ++++ 17 files changed, 360 insertions(+), 32 deletions(-) diff --git a/integration-tests/http/__tests__/claims/claims.spec.ts b/integration-tests/http/__tests__/claims/claims.spec.ts index 022aa39ac0..6e213cd6aa 100644 --- a/integration-tests/http/__tests__/claims/claims.spec.ts +++ b/integration-tests/http/__tests__/claims/claims.spec.ts @@ -169,6 +169,12 @@ medusaIntegrationTestRunner({ ], currency_code: "usd", customer_id: customer.id, + transactions: [ + { + amount: 61, + currency_code: "usd", + }, + ], }) order2 = await orderModule.createOrders({ @@ -1006,6 +1012,104 @@ medusaIntegrationTestRunner({ expect(orderResult.fulfillment_status).toEqual("shipped") }) }) + + describe("with only inbound items", () => { + beforeEach(async () => { + await api.post( + `/admin/orders/${order.id}/fulfillments`, + { + items: [ + { + id: item.id, + quantity: 2, + }, + ], + }, + adminHeaders + ) + + baseClaim = ( + await api.post( + "/admin/claims", + { + order_id: order.id, + type: ClaimType.REPLACE, + description: "Base claim", + }, + adminHeaders + ) + ).data.claim + + claimId = baseClaim.id + item = order.items[0] + + let result = await api.post( + `/admin/claims/${claimId}/inbound/items`, + { + items: [ + { + id: item.id, + reason_id: returnReason.id, + quantity: 1, + }, + ], + }, + adminHeaders + ) + + await api.post( + `/admin/claims/${claimId}/inbound/shipping-method`, + { shipping_option_id: returnShippingOption.id }, + adminHeaders + ) + + // Claim Items + await api.post( + `/admin/claims/${claimId}/claim-items`, + { + items: [ + { + id: item.id, + reason: ClaimReason.PRODUCTION_FAILURE, + quantity: 1, + }, + ], + }, + adminHeaders + ) + + await api.post(`/admin/claims/${claimId}/request`, {}, adminHeaders) + + result = ( + await api.get( + `/admin/claims?fields=*claim_items,*additional_items`, + adminHeaders + ) + ).data.claims + + expect(result).toHaveLength(1) + expect(result[0].additional_items).toHaveLength(0) + expect(result[0].claim_items).toHaveLength(1) + expect(result[0].canceled_at).toBeNull() + }) + + it.only("test inbound only", async () => { + const orderCheck = ( + await api.get(`/admin/orders/${order.id}`, adminHeaders) + ).data.order + + expect(orderCheck.summary).toEqual( + expect.objectContaining({ + pending_difference: -10, + current_order_total: 51, + original_order_total: 61, + temporary_difference: 15, + }) + ) + + expect(true).toBe(true) + }) + }) }) describe("GET /admin/claims/:id", () => { diff --git a/packages/core/core-flows/src/cart/workflows/complete-cart.ts b/packages/core/core-flows/src/cart/workflows/complete-cart.ts index 819ced1366..35e8b0e781 100644 --- a/packages/core/core-flows/src/cart/workflows/complete-cart.ts +++ b/packages/core/core-flows/src/cart/workflows/complete-cart.ts @@ -1,5 +1,5 @@ import { OrderDTO } from "@medusajs/types" -import { Modules, OrderEvents, OrderStatus } from "@medusajs/utils" +import { Modules, OrderStatus, OrderWorkflowEvents } from "@medusajs/utils" import { WorkflowData, WorkflowResponse, @@ -171,7 +171,10 @@ export const completeCartWorkflow = createWorkflow( }, ]) - emitEventStep({ eventName: OrderEvents.PLACED, data: { id: order.id } }) + emitEventStep({ + eventName: OrderWorkflowEvents.PLACED, + data: { id: order.id }, + }) return new WorkflowResponse(order) } diff --git a/packages/core/core-flows/src/common/steps/emit-event.ts b/packages/core/core-flows/src/common/steps/emit-event.ts index 7eb102ab0a..1f80ee60d1 100644 --- a/packages/core/core-flows/src/common/steps/emit-event.ts +++ b/packages/core/core-flows/src/common/steps/emit-event.ts @@ -15,7 +15,7 @@ type Input = { */ options?: Record /** - * Metadata that the subscriber receives in the `metadata` property + * Metadata that the subscriber receives in the `metadata` property * of its first parameter. */ metadata?: Record @@ -33,15 +33,15 @@ export const emitEventStepId = "emit-event-step" /** * Emit an event. - * + * * @example - * import { + * import { * createWorkflow * } from "@medusajs/workflows-sdk" * import { * emitEventStep * } from "@medusajs/core-flows" - * + * * const helloWorldWorkflow = createWorkflow( * "hello-world", * () => { @@ -57,7 +57,7 @@ export const emitEventStepId = "emit-event-step" export const emitEventStep = createStep( emitEventStepId, async (input: Input, context) => { - if (!input) { + if (!input?.data) { return } @@ -78,11 +78,16 @@ export const emitEventStep = createStep( metadata.eventGroupId = context.eventGroupId } - const message: EventBusTypes.Message = { + const dataArray = Array.isArray(data_) ? data_ : [data_] + const message: EventBusTypes.Message[] = dataArray.map((dt) => ({ name: input.eventName, - data: data_, + data: dt, options: input.options, metadata, + })) + + if (!message.length) { + return } await eventBus.emit(message) diff --git a/packages/core/core-flows/src/product-category/workflows/create-product-categories.ts b/packages/core/core-flows/src/product-category/workflows/create-product-categories.ts index d8e0e4fb59..501c95bc12 100644 --- a/packages/core/core-flows/src/product-category/workflows/create-product-categories.ts +++ b/packages/core/core-flows/src/product-category/workflows/create-product-categories.ts @@ -1,9 +1,12 @@ import { ProductCategoryWorkflow } from "@medusajs/types" +import { ProductCategoryWorkflowEvents } from "@medusajs/utils" import { WorkflowData, WorkflowResponse, createWorkflow, + transform, } from "@medusajs/workflows-sdk" +import { emitEventStep } from "../../common" import { createProductCategoriesStep } from "../steps" export const createProductCategoriesWorkflowId = "create-product-categories" @@ -12,7 +15,25 @@ export const createProductCategoriesWorkflowId = "create-product-categories" */ export const createProductCategoriesWorkflow = createWorkflow( createProductCategoriesWorkflowId, - (input: WorkflowData) => { - return new WorkflowResponse(createProductCategoriesStep(input)) + ( + input: WorkflowData + ) => { + const createdProducts = createProductCategoriesStep(input) + + const productCategoryIdEvents = transform( + { createdProducts }, + ({ createdProducts }) => { + return createdProducts.map((v) => { + return { id: v.id } + }) + } + ) + + emitEventStep({ + eventName: ProductCategoryWorkflowEvents.CREATED, + data: productCategoryIdEvents, + }) + + return new WorkflowResponse(createdProducts) } ) diff --git a/packages/core/core-flows/src/product-category/workflows/delete-product-categories.ts b/packages/core/core-flows/src/product-category/workflows/delete-product-categories.ts index 5106215cb2..d284c6e092 100644 --- a/packages/core/core-flows/src/product-category/workflows/delete-product-categories.ts +++ b/packages/core/core-flows/src/product-category/workflows/delete-product-categories.ts @@ -1,4 +1,11 @@ -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { ProductCategoryWorkflowEvents } from "@medusajs/utils" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, + transform, +} from "@medusajs/workflows-sdk" +import { emitEventStep } from "../../common" import { deleteProductCategoriesStep } from "../steps" export const deleteProductCategoriesWorkflowId = "delete-product-categories" @@ -8,6 +15,19 @@ export const deleteProductCategoriesWorkflowId = "delete-product-categories" export const deleteProductCategoriesWorkflow = createWorkflow( deleteProductCategoriesWorkflowId, (input: WorkflowData) => { - return deleteProductCategoriesStep(input) + const deleted = deleteProductCategoriesStep(input) + + const productCategoryIdEvents = transform({ input }, ({ input }) => { + return input?.map((id) => { + return { id } + }) + }) + + emitEventStep({ + eventName: ProductCategoryWorkflowEvents.DELETED, + data: productCategoryIdEvents, + }) + + return new WorkflowResponse(deleted) } ) diff --git a/packages/core/core-flows/src/product-category/workflows/update-product-categories.ts b/packages/core/core-flows/src/product-category/workflows/update-product-categories.ts index dd8e62fa4c..525775ec0e 100644 --- a/packages/core/core-flows/src/product-category/workflows/update-product-categories.ts +++ b/packages/core/core-flows/src/product-category/workflows/update-product-categories.ts @@ -1,9 +1,12 @@ import { ProductCategoryWorkflow } from "@medusajs/types" +import { ProductCategoryWorkflowEvents } from "@medusajs/utils" import { WorkflowData, WorkflowResponse, createWorkflow, + transform, } from "@medusajs/workflows-sdk" +import { emitEventStep } from "../../common" import { updateProductCategoriesStep } from "../steps" export const updateProductCategoriesWorkflowId = "update-product-categories" @@ -12,7 +15,25 @@ export const updateProductCategoriesWorkflowId = "update-product-categories" */ export const updateProductCategoriesWorkflow = createWorkflow( updateProductCategoriesWorkflowId, - (input: WorkflowData) => { - return new WorkflowResponse(updateProductCategoriesStep(input)) + ( + input: WorkflowData + ) => { + const updatedCategories = updateProductCategoriesStep(input) + + const productCategoryIdEvents = transform( + { updatedCategories }, + ({ updatedCategories }) => { + return updatedCategories.map((v) => { + return { id: v.id } + }) + } + ) + + emitEventStep({ + eventName: ProductCategoryWorkflowEvents.UPDATED, + data: productCategoryIdEvents, + }) + + return new WorkflowResponse(updatedCategories) } ) diff --git a/packages/core/core-flows/src/product/workflows/create-collections.ts b/packages/core/core-flows/src/product/workflows/create-collections.ts index de80d18006..78dfeba4a8 100644 --- a/packages/core/core-flows/src/product/workflows/create-collections.ts +++ b/packages/core/core-flows/src/product/workflows/create-collections.ts @@ -1,10 +1,13 @@ import { AdditionalData, ProductTypes } from "@medusajs/types" +import { ProductCollectionWorkflowEvents } from "@medusajs/utils" import { WorkflowData, WorkflowResponse, createHook, createWorkflow, + transform, } from "@medusajs/workflows-sdk" +import { emitEventStep } from "../../common" import { createCollectionsStep } from "../steps" export type CreateCollectionsWorkflowInput = { @@ -19,6 +22,18 @@ export const createCollectionsWorkflow = createWorkflow( createCollectionsWorkflowId, (input: WorkflowData) => { const collections = createCollectionsStep(input.collections) + + const collectionIdEvents = transform({ collections }, ({ collections }) => { + return collections.map((v) => { + return { id: v.id } + }) + }) + + emitEventStep({ + eventName: ProductCollectionWorkflowEvents.CREATED, + data: collectionIdEvents, + }) + const collectionsCreated = createHook("collectionsCreated", { collections, additional_data: input.additional_data, diff --git a/packages/core/core-flows/src/product/workflows/create-product-variants.ts b/packages/core/core-flows/src/product/workflows/create-product-variants.ts index c67e73ffb8..d86e91c1cd 100644 --- a/packages/core/core-flows/src/product/workflows/create-product-variants.ts +++ b/packages/core/core-flows/src/product/workflows/create-product-variants.ts @@ -5,7 +5,7 @@ import { PricingTypes, ProductTypes, } from "@medusajs/types" -import { Modules } from "@medusajs/utils" +import { Modules, ProductVariantWorkflowEvents } from "@medusajs/utils" import { WorkflowData, WorkflowResponse, @@ -13,6 +13,7 @@ import { createWorkflow, transform, } from "@medusajs/workflows-sdk" +import { emitEventStep } from "../../common" import { createLinksWorkflow } from "../../common/workflows/create-links" import { validateInventoryItems } from "../../inventory/steps/validate-inventory-items" import { createInventoryItemsWorkflow } from "../../inventory/workflows/create-inventory-items" @@ -234,6 +235,17 @@ export const createProductVariantsWorkflow = createWorkflow( } ) + const variantIdEvents = transform({ response }, ({ response }) => { + return response.map((v) => { + return { id: v.id } + }) + }) + + emitEventStep({ + eventName: ProductVariantWorkflowEvents.CREATED, + data: variantIdEvents, + }) + const productVariantsCreated = createHook("productVariantsCreated", { product_variants: response, additional_data: input.additional_data, diff --git a/packages/core/core-flows/src/product/workflows/create-products.ts b/packages/core/core-flows/src/product/workflows/create-products.ts index 78a2df85bf..58f84ff1d3 100644 --- a/packages/core/core-flows/src/product/workflows/create-products.ts +++ b/packages/core/core-flows/src/product/workflows/create-products.ts @@ -4,7 +4,7 @@ import { PricingTypes, ProductTypes, } from "@medusajs/types" -import { isPresent } from "@medusajs/utils" +import { ProductWorkflowEvents, isPresent } from "@medusajs/utils" import { WorkflowData, WorkflowResponse, @@ -12,6 +12,7 @@ import { createWorkflow, transform, } from "@medusajs/workflows-sdk" +import { emitEventStep } from "../../common" import { associateProductsWithSalesChannelsStep } from "../../sales-channel" import { createProductsStep } from "../steps/create-products" import { createProductVariantsWorkflow } from "./create-product-variants" @@ -101,6 +102,17 @@ export const createProductsWorkflow = createWorkflow( } ) + const productIdEvents = transform({ response }, ({ response }) => { + return response.map((v) => { + return { id: v.id } + }) + }) + + emitEventStep({ + eventName: ProductWorkflowEvents.CREATED, + data: productIdEvents, + }) + const productsCreated = createHook("productsCreated", { products: response, additional_data: input.additional_data, diff --git a/packages/core/core-flows/src/product/workflows/delete-collections.ts b/packages/core/core-flows/src/product/workflows/delete-collections.ts index 1fd3505d0e..8e11225f73 100644 --- a/packages/core/core-flows/src/product/workflows/delete-collections.ts +++ b/packages/core/core-flows/src/product/workflows/delete-collections.ts @@ -1,9 +1,12 @@ +import { ProductCollectionWorkflowEvents } from "@medusajs/utils" import { WorkflowData, WorkflowResponse, createHook, createWorkflow, + transform, } from "@medusajs/workflows-sdk" +import { emitEventStep } from "../../common" import { deleteCollectionsStep } from "../steps" export type DeleteCollectionsWorkflowInput = { ids: string[] } @@ -16,6 +19,18 @@ export const deleteCollectionsWorkflow = createWorkflow( deleteCollectionsWorkflowId, (input: WorkflowData) => { const deletedCollections = deleteCollectionsStep(input.ids) + + const collectionIdEvents = transform({ input }, ({ input }) => { + return input.ids?.map((id) => { + return { id } + }) + }) + + emitEventStep({ + eventName: ProductCollectionWorkflowEvents.DELETED, + data: collectionIdEvents, + }) + const collectionsDeleted = createHook("collectionsDeleted", { ids: input.ids, }) diff --git a/packages/core/core-flows/src/product/workflows/delete-product-variants.ts b/packages/core/core-flows/src/product/workflows/delete-product-variants.ts index 50b72759a3..493383c963 100644 --- a/packages/core/core-flows/src/product/workflows/delete-product-variants.ts +++ b/packages/core/core-flows/src/product/workflows/delete-product-variants.ts @@ -1,12 +1,13 @@ +import { Modules, ProductVariantWorkflowEvents } from "@medusajs/utils" import { - createHook, - createWorkflow, WorkflowData, WorkflowResponse, + createHook, + createWorkflow, + transform, } from "@medusajs/workflows-sdk" +import { emitEventStep, removeRemoteLinkStep } from "../../common" import { deleteProductVariantsStep } from "../steps" -import { removeRemoteLinkStep } from "../../common" -import { Modules } from "@medusajs/utils" export type DeleteProductVariantsWorkflowInput = { ids: string[] } @@ -22,6 +23,18 @@ export const deleteProductVariantsWorkflow = createWorkflow( }).config({ name: "remove-variant-link-step" }) const deletedProductVariants = deleteProductVariantsStep(input.ids) + + const variantIdEvents = transform({ input }, ({ input }) => { + return input.ids?.map((id) => { + return { id } + }) + }) + + emitEventStep({ + eventName: ProductVariantWorkflowEvents.DELETED, + data: variantIdEvents, + }) + const productVariantsDeleted = createHook("productVariantsDeleted", { ids: input.ids, }) diff --git a/packages/core/core-flows/src/product/workflows/delete-products.ts b/packages/core/core-flows/src/product/workflows/delete-products.ts index f278d2c9ef..c0536f024c 100644 --- a/packages/core/core-flows/src/product/workflows/delete-products.ts +++ b/packages/core/core-flows/src/product/workflows/delete-products.ts @@ -1,15 +1,15 @@ +import { Modules, ProductWorkflowEvents } from "@medusajs/utils" import { + WorkflowData, + WorkflowResponse, createHook, createWorkflow, parallelize, transform, - WorkflowData, - WorkflowResponse, } from "@medusajs/workflows-sdk" -import { removeRemoteLinkStep } from "../../common" +import { emitEventStep, removeRemoteLinkStep } from "../../common" import { deleteProductsStep } from "../steps/delete-products" import { getProductsStep } from "../steps/get-products" -import { Modules } from "@medusajs/utils" export type DeleteProductsWorkflowInput = { ids: string[] } @@ -37,6 +37,17 @@ export const deleteProductsWorkflow = createWorkflow( deleteProductsStep(input.ids) ) + const productIdEvents = transform({ input }, ({ input }) => { + return input.ids?.map((id) => { + return { id } + }) + }) + + emitEventStep({ + eventName: ProductWorkflowEvents.DELETED, + data: productIdEvents, + }) + const productsDeleted = createHook("productsDeleted", { ids: input.ids, }) diff --git a/packages/core/core-flows/src/product/workflows/update-collections.ts b/packages/core/core-flows/src/product/workflows/update-collections.ts index a6566f4c24..1ed6820f12 100644 --- a/packages/core/core-flows/src/product/workflows/update-collections.ts +++ b/packages/core/core-flows/src/product/workflows/update-collections.ts @@ -1,10 +1,13 @@ import { AdditionalData, ProductTypes } from "@medusajs/types" +import { ProductCollectionWorkflowEvents } from "@medusajs/utils" import { WorkflowData, WorkflowResponse, createHook, createWorkflow, + transform, } from "@medusajs/workflows-sdk" +import { emitEventStep } from "../../common" import { updateCollectionsStep } from "../steps" export type UpdateCollectionsWorkflowInput = { @@ -20,6 +23,21 @@ export const updateCollectionsWorkflow = createWorkflow( updateCollectionsWorkflowId, (input: WorkflowData) => { const updatedCollections = updateCollectionsStep(input) + + const collectionIdEvents = transform( + { updatedCollections }, + ({ updatedCollections }) => { + return updatedCollections.map((v) => { + return { id: v.id } + }) + } + ) + + emitEventStep({ + eventName: ProductCollectionWorkflowEvents.UPDATED, + data: collectionIdEvents, + }) + const collectionsUpdated = createHook("collectionsUpdated", { additional_data: input.additional_data, collections: updatedCollections, diff --git a/packages/core/core-flows/src/product/workflows/update-product-variants.ts b/packages/core/core-flows/src/product/workflows/update-product-variants.ts index 41f271226a..1cebef9e66 100644 --- a/packages/core/core-flows/src/product/workflows/update-product-variants.ts +++ b/packages/core/core-flows/src/product/workflows/update-product-variants.ts @@ -1,4 +1,5 @@ import { AdditionalData, PricingTypes, ProductTypes } from "@medusajs/types" +import { ProductVariantWorkflowEvents } from "@medusajs/utils" import { WorkflowData, WorkflowResponse, @@ -6,8 +7,9 @@ import { createWorkflow, transform, } from "@medusajs/workflows-sdk" -import { updateProductVariantsStep } from "../steps" +import { emitEventStep } from "../../common" import { updatePriceSetsStep } from "../../pricing" +import { updateProductVariantsStep } from "../steps" import { getVariantPricingLinkStep } from "../steps/get-variant-pricing-link" export type UpdateProductVariantsWorkflowInput = @@ -29,7 +31,9 @@ export const updateProductVariantsWorkflowId = "update-product-variants" */ export const updateProductVariantsWorkflow = createWorkflow( updateProductVariantsWorkflowId, - (input: WorkflowData) => { + ( + input: WorkflowData + ) => { // Passing prices to the product module will fail, we want to keep them for after the variant is updated. const updateWithoutPrices = transform({ input }, (data) => { if ("product_variants" in data.input) { @@ -134,6 +138,17 @@ export const updateProductVariantsWorkflow = createWorkflow( } ) + const variantIdEvents = transform({ response }, ({ response }) => { + return response.map((v) => { + return { id: v.id } + }) + }) + + emitEventStep({ + eventName: ProductVariantWorkflowEvents.UPDATED, + data: variantIdEvents, + }) + const productVariantsUpdated = createHook("productVariantsUpdated", { product_variants: response, additional_data: input.additional_data, diff --git a/packages/core/core-flows/src/product/workflows/update-products.ts b/packages/core/core-flows/src/product/workflows/update-products.ts index ccf5357beb..d43cd896e3 100644 --- a/packages/core/core-flows/src/product/workflows/update-products.ts +++ b/packages/core/core-flows/src/product/workflows/update-products.ts @@ -6,17 +6,22 @@ import { ProductTypes, UpdateProductVariantWorkflowInputDTO, } from "@medusajs/types" -import { arrayDifference, Modules } from "@medusajs/utils" import { + Modules, + ProductWorkflowEvents, + arrayDifference, +} from "@medusajs/utils" +import { + WorkflowData, + WorkflowResponse, createHook, createWorkflow, transform, - WorkflowData, - WorkflowResponse, } from "@medusajs/workflows-sdk" import { createRemoteLinkStep, dismissRemoteLinkStep, + emitEventStep, useRemoteQueryStep, } from "../../common" import { upsertVariantPricesWorkflow } from "./upsert-variant-prices" @@ -36,7 +41,7 @@ export type UpdateProductsWorkflowInputProducts = { })[] } & AdditionalData -export type UpdateProductWorkflowInput = +export type UpdateProductWorkflowInput = | UpdateProductsWorkflowInputSelector | UpdateProductsWorkflowInputProducts @@ -279,6 +284,20 @@ export const updateProductsWorkflow = createWorkflow( dismissRemoteLinkStep(toDeleteSalesChannelLinks) createRemoteLinkStep(salesChannelLinks) + const productIdEvents = transform( + { updatedProductIds }, + ({ updatedProductIds }) => { + return updatedProductIds.map((id) => { + return { id } + }) + } + ) + + emitEventStep({ + eventName: ProductWorkflowEvents.UPDATED, + data: productIdEvents, + }) + const productsUpdated = createHook("productsUpdated", { products: updatedProducts, additional_data: input.additional_data, diff --git a/packages/core/utils/src/order/events.ts b/packages/core/utils/src/order/events.ts index 6ecc74700e..95f2d56246 100644 --- a/packages/core/utils/src/order/events.ts +++ b/packages/core/utils/src/order/events.ts @@ -1,4 +1,4 @@ -export const OrderEvents = { +export const OrderWorkflowEvents = { PLACED: "order.placed", CANCELED: "order.canceled", COMPLETED: "order.completed", diff --git a/packages/core/utils/src/product/events.ts b/packages/core/utils/src/product/events.ts index 464972bc09..77a7475513 100644 --- a/packages/core/utils/src/product/events.ts +++ b/packages/core/utils/src/product/events.ts @@ -21,3 +21,27 @@ export const ProductEvents = buildEventNamesFromEntityName( eventBaseNames, Modules.PRODUCT ) + +export const ProductCategoryWorkflowEvents = { + CREATED: "product-category.created", + UPDATED: "product-category.updated", + DELETED: "product-category.deleted", +} + +export const ProductCollectionWorkflowEvents = { + CREATED: "product-collection.created", + UPDATED: "product-collection.updated", + DELETED: "product-collection.deleted", +} + +export const ProductVariantWorkflowEvents = { + UPDATED: "product-variant.updated", + CREATED: "product-variant.created", + DELETED: "product-variant.deleted", +} + +export const ProductWorkflowEvents = { + UPDATED: "product.updated", + CREATED: "product.created", + DELETED: "product.deleted", +}