diff --git a/packages/core/core-flows/src/api-key/workflows/create-api-keys.ts b/packages/core/core-flows/src/api-key/workflows/create-api-keys.ts index 24ec6d9f3d..dd5fad41e6 100644 --- a/packages/core/core-flows/src/api-key/workflows/create-api-keys.ts +++ b/packages/core/core-flows/src/api-key/workflows/create-api-keys.ts @@ -1,5 +1,9 @@ import { ApiKeyDTO, CreateApiKeyDTO } from "@medusajs/types" -import { createWorkflow, WorkflowData } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createApiKeysStep } from "../steps" type WorkflowInput = { api_keys: CreateApiKeyDTO[] } @@ -7,7 +11,7 @@ type WorkflowInput = { api_keys: CreateApiKeyDTO[] } export const createApiKeysWorkflowId = "create-api-keys" export const createApiKeysWorkflow = createWorkflow( createApiKeysWorkflowId, - (input: WorkflowData): WorkflowData => { - return createApiKeysStep(input) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(createApiKeysStep(input)) } ) diff --git a/packages/core/core-flows/src/api-key/workflows/revoke-api-keys.ts b/packages/core/core-flows/src/api-key/workflows/revoke-api-keys.ts index 79baf41992..aabdcea48b 100644 --- a/packages/core/core-flows/src/api-key/workflows/revoke-api-keys.ts +++ b/packages/core/core-flows/src/api-key/workflows/revoke-api-keys.ts @@ -3,7 +3,11 @@ import { FilterableApiKeyProps, RevokeApiKeyDTO, } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { revokeApiKeysStep } from "../steps" type RevokeApiKeysStepInput = { @@ -16,7 +20,7 @@ type WorkflowInput = RevokeApiKeysStepInput export const revokeApiKeysWorkflowId = "revoke-api-keys" export const revokeApiKeysWorkflow = createWorkflow( revokeApiKeysWorkflowId, - (input: WorkflowData): WorkflowData => { - return revokeApiKeysStep(input) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(revokeApiKeysStep(input)) } ) diff --git a/packages/core/core-flows/src/api-key/workflows/update-api-keys.ts b/packages/core/core-flows/src/api-key/workflows/update-api-keys.ts index 9f42051c4e..f4c9be97e0 100644 --- a/packages/core/core-flows/src/api-key/workflows/update-api-keys.ts +++ b/packages/core/core-flows/src/api-key/workflows/update-api-keys.ts @@ -3,7 +3,11 @@ import { FilterableApiKeyProps, UpdateApiKeyDTO, } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateApiKeysStep } from "../steps" type UpdateApiKeysStepInput = { @@ -16,7 +20,7 @@ type WorkflowInput = UpdateApiKeysStepInput export const updateApiKeysWorkflowId = "update-api-keys" export const updateApiKeysWorkflow = createWorkflow( updateApiKeysWorkflowId, - (input: WorkflowData): WorkflowData => { - return updateApiKeysStep(input) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(updateApiKeysStep(input)) } ) diff --git a/packages/core/core-flows/src/common/workflows/batch-links.ts b/packages/core/core-flows/src/common/workflows/batch-links.ts index e51faaff1c..d5e7d7f887 100644 --- a/packages/core/core-flows/src/common/workflows/batch-links.ts +++ b/packages/core/core-flows/src/common/workflows/batch-links.ts @@ -2,6 +2,7 @@ import { LinkDefinition } from "@medusajs/modules-sdk" import { BatchWorkflowInput } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, parallelize, } from "@medusajs/workflows-sdk" @@ -23,10 +24,10 @@ export const batchLinksWorkflow = createWorkflow( dismissRemoteLinkStep(input.delete || []) ) - return { + return new WorkflowResponse({ created, updated, deleted, - } + }) } ) diff --git a/packages/core/core-flows/src/common/workflows/create-links.ts b/packages/core/core-flows/src/common/workflows/create-links.ts index d94b4df641..39023973f7 100644 --- a/packages/core/core-flows/src/common/workflows/create-links.ts +++ b/packages/core/core-flows/src/common/workflows/create-links.ts @@ -1,11 +1,15 @@ import { LinkDefinition } from "@medusajs/modules-sdk" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createRemoteLinkStep } from "../steps/create-remote-links" export const createLinksWorkflowId = "create-link" export const createLinksWorkflow = createWorkflow( createLinksWorkflowId, (input: WorkflowData) => { - return createRemoteLinkStep(input) + return new WorkflowResponse(createRemoteLinkStep(input)) } ) diff --git a/packages/core/core-flows/src/common/workflows/dismiss-links.ts b/packages/core/core-flows/src/common/workflows/dismiss-links.ts index 14af112e82..95ad9cde26 100644 --- a/packages/core/core-flows/src/common/workflows/dismiss-links.ts +++ b/packages/core/core-flows/src/common/workflows/dismiss-links.ts @@ -1,11 +1,15 @@ import { LinkDefinition } from "@medusajs/modules-sdk" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { dismissRemoteLinkStep } from "../steps/dismiss-remote-links" export const dismissLinksWorkflowId = "dismiss-link" export const dismissLinksWorkflow = createWorkflow( dismissLinksWorkflowId, (input: WorkflowData) => { - return dismissRemoteLinkStep(input) + return new WorkflowResponse(dismissRemoteLinkStep(input)) } ) diff --git a/packages/core/core-flows/src/common/workflows/update-links.ts b/packages/core/core-flows/src/common/workflows/update-links.ts index 566c9755f0..38305e6afa 100644 --- a/packages/core/core-flows/src/common/workflows/update-links.ts +++ b/packages/core/core-flows/src/common/workflows/update-links.ts @@ -1,11 +1,15 @@ import { LinkDefinition } from "@medusajs/modules-sdk" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateRemoteLinksStep } from "../steps/update-remote-links" export const updateLinksWorkflowId = "update-link" export const updateLinksWorkflow = createWorkflow( updateLinksWorkflowId, (input: WorkflowData) => { - return updateRemoteLinksStep(input) + return new WorkflowResponse(updateRemoteLinksStep(input)) } ) diff --git a/packages/core/core-flows/src/customer-group/workflows/create-customer-groups.ts b/packages/core/core-flows/src/customer-group/workflows/create-customer-groups.ts index 7ee861087e..26fb45b871 100644 --- a/packages/core/core-flows/src/customer-group/workflows/create-customer-groups.ts +++ b/packages/core/core-flows/src/customer-group/workflows/create-customer-groups.ts @@ -1,5 +1,9 @@ import { CustomerGroupDTO, CreateCustomerGroupDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createCustomerGroupsStep } from "../steps" type WorkflowInput = { customersData: CreateCustomerGroupDTO[] } @@ -7,7 +11,9 @@ type WorkflowInput = { customersData: CreateCustomerGroupDTO[] } export const createCustomerGroupsWorkflowId = "create-customer-groups" export const createCustomerGroupsWorkflow = createWorkflow( createCustomerGroupsWorkflowId, - (input: WorkflowData): WorkflowData => { - return createCustomerGroupsStep(input.customersData) + ( + input: WorkflowData + ): WorkflowResponse => { + return new WorkflowResponse(createCustomerGroupsStep(input.customersData)) } ) diff --git a/packages/core/core-flows/src/customer-group/workflows/update-customer-groups.ts b/packages/core/core-flows/src/customer-group/workflows/update-customer-groups.ts index f807f644d2..4bdf64f244 100644 --- a/packages/core/core-flows/src/customer-group/workflows/update-customer-groups.ts +++ b/packages/core/core-flows/src/customer-group/workflows/update-customer-groups.ts @@ -3,7 +3,11 @@ import { FilterableCustomerGroupProps, CustomerGroupUpdatableFields, } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateCustomerGroupsStep } from "../steps" type WorkflowInput = { @@ -14,7 +18,9 @@ type WorkflowInput = { export const updateCustomerGroupsWorkflowId = "update-customer-groups" export const updateCustomerGroupsWorkflow = createWorkflow( updateCustomerGroupsWorkflowId, - (input: WorkflowData): WorkflowData => { - return updateCustomerGroupsStep(input) + ( + input: WorkflowData + ): WorkflowResponse => { + return new WorkflowResponse(updateCustomerGroupsStep(input)) } ) diff --git a/packages/core/core-flows/src/customer/workflows/create-addresses.ts b/packages/core/core-flows/src/customer/workflows/create-addresses.ts index ea08335498..f3df0d5f15 100644 --- a/packages/core/core-flows/src/customer/workflows/create-addresses.ts +++ b/packages/core/core-flows/src/customer/workflows/create-addresses.ts @@ -1,6 +1,7 @@ import { CreateCustomerAddressDTO, CustomerAddressDTO } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, parallelize, transform, @@ -16,7 +17,9 @@ type WorkflowInput = { addresses: CreateCustomerAddressDTO[] } export const createCustomerAddressesWorkflowId = "create-customer-addresses" export const createCustomerAddressesWorkflow = createWorkflow( createCustomerAddressesWorkflowId, - (input: WorkflowData): WorkflowData => { + ( + input: WorkflowData + ): WorkflowResponse => { const unsetInput = transform(input, (data) => ({ create: data.addresses, })) @@ -26,6 +29,6 @@ export const createCustomerAddressesWorkflow = createWorkflow( maybeUnsetDefaultBillingAddressesStep(unsetInput) ) - return createCustomerAddressesStep(input.addresses) + return new WorkflowResponse(createCustomerAddressesStep(input.addresses)) } ) diff --git a/packages/core/core-flows/src/customer/workflows/create-customer-account.ts b/packages/core/core-flows/src/customer/workflows/create-customer-account.ts index 3b5ade6aec..567d5ceee8 100644 --- a/packages/core/core-flows/src/customer/workflows/create-customer-account.ts +++ b/packages/core/core-flows/src/customer/workflows/create-customer-account.ts @@ -1,5 +1,9 @@ import { CreateCustomerDTO, CustomerDTO } from "@medusajs/types" -import { createWorkflow, WorkflowData } from "@medusajs/workflows-sdk" +import { + createWorkflow, + WorkflowData, + WorkflowResponse, +} from "@medusajs/workflows-sdk" import { createCustomersStep } from "../steps" import { transform } from "@medusajs/workflows-sdk" import { setAuthAppMetadataStep } from "../../auth" @@ -12,7 +16,7 @@ type WorkflowInput = { export const createCustomerAccountWorkflowId = "create-customer-account" export const createCustomerAccountWorkflow = createWorkflow( createCustomerAccountWorkflowId, - (input: WorkflowData): WorkflowData => { + (input: WorkflowData): WorkflowResponse => { const customers = createCustomersStep([input.customersData]) const customer = transform( @@ -26,6 +30,6 @@ export const createCustomerAccountWorkflow = createWorkflow( value: customer.id, }) - return customer + return new WorkflowResponse(customer) } ) diff --git a/packages/core/core-flows/src/customer/workflows/create-customers.ts b/packages/core/core-flows/src/customer/workflows/create-customers.ts index 23e19d33d1..b4f24dca15 100644 --- a/packages/core/core-flows/src/customer/workflows/create-customers.ts +++ b/packages/core/core-flows/src/customer/workflows/create-customers.ts @@ -1,5 +1,9 @@ import { CustomerDTO, CreateCustomerDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createCustomersStep } from "../steps" type WorkflowInput = { customersData: CreateCustomerDTO[] } @@ -7,7 +11,7 @@ type WorkflowInput = { customersData: CreateCustomerDTO[] } export const createCustomersWorkflowId = "create-customers" export const createCustomersWorkflow = createWorkflow( createCustomersWorkflowId, - (input: WorkflowData): WorkflowData => { - return createCustomersStep(input.customersData) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(createCustomersStep(input.customersData)) } ) diff --git a/packages/core/core-flows/src/customer/workflows/update-addresses.ts b/packages/core/core-flows/src/customer/workflows/update-addresses.ts index ad2524d398..2cfa44338c 100644 --- a/packages/core/core-flows/src/customer/workflows/update-addresses.ts +++ b/packages/core/core-flows/src/customer/workflows/update-addresses.ts @@ -5,6 +5,7 @@ import { } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, parallelize, transform, @@ -23,7 +24,9 @@ type WorkflowInput = { export const updateCustomerAddressesWorkflowId = "update-customer-addresses" export const updateCustomerAddressesWorkflow = createWorkflow( updateCustomerAddressesWorkflowId, - (input: WorkflowData): WorkflowData => { + ( + input: WorkflowData + ): WorkflowResponse => { const unsetInput = transform(input, (data) => ({ update: data, })) @@ -33,6 +36,6 @@ export const updateCustomerAddressesWorkflow = createWorkflow( maybeUnsetDefaultBillingAddressesStep(unsetInput) ) - return updateCustomerAddressesStep(input) + return new WorkflowResponse(updateCustomerAddressesStep(input)) } ) diff --git a/packages/core/core-flows/src/customer/workflows/update-customers.ts b/packages/core/core-flows/src/customer/workflows/update-customers.ts index 478533f305..8ee92f2991 100644 --- a/packages/core/core-flows/src/customer/workflows/update-customers.ts +++ b/packages/core/core-flows/src/customer/workflows/update-customers.ts @@ -3,7 +3,11 @@ import { CustomerUpdatableFields, FilterableCustomerProps, } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateCustomersStep } from "../steps" type UpdateCustomersStepInput = { @@ -16,7 +20,7 @@ type WorkflowInput = UpdateCustomersStepInput export const updateCustomersWorkflowId = "update-customers" export const updateCustomersWorkflow = createWorkflow( updateCustomersWorkflowId, - (input: WorkflowData): WorkflowData => { - return updateCustomersStep(input) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(updateCustomersStep(input)) } ) diff --git a/packages/core/core-flows/src/defaults/workflows/create-defaults.ts b/packages/core/core-flows/src/defaults/workflows/create-defaults.ts index 847a79996d..b1aa69d6ee 100644 --- a/packages/core/core-flows/src/defaults/workflows/create-defaults.ts +++ b/packages/core/core-flows/src/defaults/workflows/create-defaults.ts @@ -1,11 +1,11 @@ -import { createWorkflow } from "@medusajs/workflows-sdk" +import { createWorkflow, WorkflowResponse } from "@medusajs/workflows-sdk" import { createDefaultSalesChannelStep } from "../../sales-channel" import { createDefaultStoreStep } from "../steps/create-default-store" export const createDefaultsWorkflowID = "create-defaults" export const createDefaultsWorkflow = createWorkflow( createDefaultsWorkflowID, - (input) => { + () => { const salesChannel = createDefaultSalesChannelStep({ data: { name: "Default Sales Channel", @@ -18,6 +18,6 @@ export const createDefaultsWorkflow = createWorkflow( }, }) - return store + return new WorkflowResponse(store) } ) diff --git a/packages/core/core-flows/src/definition/cart/workflows/add-to-cart.ts b/packages/core/core-flows/src/definition/cart/workflows/add-to-cart.ts index 3c93f8aae3..57c12b32da 100644 --- a/packages/core/core-flows/src/definition/cart/workflows/add-to-cart.ts +++ b/packages/core/core-flows/src/definition/cart/workflows/add-to-cart.ts @@ -4,6 +4,7 @@ import { } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, parallelize, transform, @@ -118,6 +119,6 @@ export const addToCartWorkflow = createWorkflow( refreshPaymentCollectionForCartStep({ cart_id: input.cart.id }) ) - return items + return new WorkflowResponse(items) } ) diff --git a/packages/core/core-flows/src/definition/cart/workflows/complete-cart.ts b/packages/core/core-flows/src/definition/cart/workflows/complete-cart.ts index 948279ffdf..2f5f395a3c 100644 --- a/packages/core/core-flows/src/definition/cart/workflows/complete-cart.ts +++ b/packages/core/core-flows/src/definition/cart/workflows/complete-cart.ts @@ -2,6 +2,7 @@ import { OrderDTO } from "@medusajs/types" import { Modules, OrderEvents } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createWorkflow, parallelize, transform, @@ -20,7 +21,7 @@ import { confirmVariantInventoryWorkflow } from "./confirm-variant-inventory" export const completeCartWorkflowId = "complete-cart" export const completeCartWorkflow = createWorkflow( completeCartWorkflowId, - (input: WorkflowData): WorkflowData => { + (input: WorkflowData): WorkflowResponse => { const cart = useRemoteQueryStep({ entry_point: "cart", fields: completeCartFields, @@ -94,6 +95,6 @@ export const completeCartWorkflow = createWorkflow( emitEventStep({ eventName: OrderEvents.PLACED, data: { id: order.id } }) - return order + return new WorkflowResponse(order) } ) diff --git a/packages/core/core-flows/src/definition/cart/workflows/confirm-variant-inventory.ts b/packages/core/core-flows/src/definition/cart/workflows/confirm-variant-inventory.ts index eb6ec4cfe6..3b520e75d4 100644 --- a/packages/core/core-flows/src/definition/cart/workflows/confirm-variant-inventory.ts +++ b/packages/core/core-flows/src/definition/cart/workflows/confirm-variant-inventory.ts @@ -2,6 +2,7 @@ import { ConfirmVariantInventoryWorkflowInputDTO } from "@medusajs/types" import { MedusaError, deepFlatMap } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createWorkflow, transform, } from "@medusajs/workflows-sdk" @@ -24,7 +25,7 @@ export const confirmVariantInventoryWorkflow = createWorkflow( confirmVariantInventoryWorkflowId, ( input: WorkflowData - ): WorkflowData => { + ): WorkflowResponse => { const confirmInventoryInput = transform({ input }, (data) => { const productVariantInventoryItems = new Map() const stockLocationIds = new Set() @@ -111,6 +112,6 @@ export const confirmVariantInventoryWorkflow = createWorkflow( confirmInventoryStep(confirmInventoryInput) - return confirmInventoryInput + return new WorkflowResponse(confirmInventoryInput) } ) diff --git a/packages/core/core-flows/src/definition/cart/workflows/create-carts.ts b/packages/core/core-flows/src/definition/cart/workflows/create-carts.ts index 6e7cacab24..58198635f4 100644 --- a/packages/core/core-flows/src/definition/cart/workflows/create-carts.ts +++ b/packages/core/core-flows/src/definition/cart/workflows/create-carts.ts @@ -2,6 +2,7 @@ import { CartDTO, CreateCartWorkflowInputDTO } from "@medusajs/types" import { MedusaError } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createWorkflow, parallelize, transform, @@ -28,7 +29,9 @@ import { refreshPaymentCollectionForCartStep } from "./refresh-payment-collectio export const createCartWorkflowId = "create-cart" export const createCartWorkflow = createWorkflow( createCartWorkflowId, - (input: WorkflowData): WorkflowData => { + ( + input: WorkflowData + ): WorkflowResponse => { const variantIds = transform({ input }, (data) => { return (data.input.items ?? []).map((i) => i.variant_id) }) @@ -153,6 +156,6 @@ export const createCartWorkflow = createWorkflow( }) ) - return cart + return new WorkflowResponse(cart) } ) diff --git a/packages/core/core-flows/src/definition/cart/workflows/list-shipping-options-for-cart.ts b/packages/core/core-flows/src/definition/cart/workflows/list-shipping-options-for-cart.ts index cf6e71f800..94c7893077 100644 --- a/packages/core/core-flows/src/definition/cart/workflows/list-shipping-options-for-cart.ts +++ b/packages/core/core-flows/src/definition/cart/workflows/list-shipping-options-for-cart.ts @@ -4,6 +4,7 @@ import { createWorkflow, transform, WorkflowData, + WorkflowResponse, } from "@medusajs/workflows-sdk" import { useRemoteQueryStep } from "../../../common/steps/use-remote-query" @@ -108,6 +109,6 @@ export const listShippingOptionsForCartWorkflow = createWorkflow( } ) - return shippingOptionsWithPrice + return new WorkflowResponse(shippingOptionsWithPrice) } ) diff --git a/packages/core/core-flows/src/definition/cart/workflows/update-line-item-in-cart.ts b/packages/core/core-flows/src/definition/cart/workflows/update-line-item-in-cart.ts index b955208698..f321cdd54d 100644 --- a/packages/core/core-flows/src/definition/cart/workflows/update-line-item-in-cart.ts +++ b/packages/core/core-flows/src/definition/cart/workflows/update-line-item-in-cart.ts @@ -1,6 +1,7 @@ import { UpdateLineItemInCartWorkflowInputDTO } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, parallelize, transform, @@ -97,6 +98,6 @@ export const updateLineItemInCartWorkflow = createWorkflow( const updatedItem = transform({ result }, (data) => data.result?.[0]) - return updatedItem + return new WorkflowResponse(updatedItem) } ) diff --git a/packages/core/core-flows/src/file/workflows/upload-files.ts b/packages/core/core-flows/src/file/workflows/upload-files.ts index a5c4a71b0b..bb556f627e 100644 --- a/packages/core/core-flows/src/file/workflows/upload-files.ts +++ b/packages/core/core-flows/src/file/workflows/upload-files.ts @@ -1,5 +1,9 @@ import { FileDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { uploadFilesStep } from "../steps" type WorkflowInput = { @@ -14,7 +18,7 @@ type WorkflowInput = { export const uploadFilesWorkflowId = "upload-files" export const uploadFilesWorkflow = createWorkflow( uploadFilesWorkflowId, - (input: WorkflowData): WorkflowData => { - return uploadFilesStep(input) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(uploadFilesStep(input)) } ) diff --git a/packages/core/core-flows/src/fulfillment/workflows/batch-shipping-option-rules.ts b/packages/core/core-flows/src/fulfillment/workflows/batch-shipping-option-rules.ts index d1d231e806..ae65415ca5 100644 --- a/packages/core/core-flows/src/fulfillment/workflows/batch-shipping-option-rules.ts +++ b/packages/core/core-flows/src/fulfillment/workflows/batch-shipping-option-rules.ts @@ -10,6 +10,7 @@ import { parallelize, transform, WorkflowData, + WorkflowResponse, } from "@medusajs/workflows-sdk" import { createShippingOptionRulesStep, @@ -27,7 +28,7 @@ export const batchShippingOptionRulesWorkflow = createWorkflow( UpdateShippingOptionRuleDTO > > - ): WorkflowData> => { + ): WorkflowResponse> => { const actionInputs = transform({ input }, (data) => { const { create, update, delete: del } = data.input return { @@ -43,6 +44,8 @@ export const batchShippingOptionRulesWorkflow = createWorkflow( deleteShippingOptionRulesStep(actionInputs.deleteInput) ) - return transform({ created, deleted, updated }, (data) => data) + return new WorkflowResponse( + transform({ created, deleted, updated }, (data) => data) + ) } ) diff --git a/packages/core/core-flows/src/fulfillment/workflows/create-fulfillment.ts b/packages/core/core-flows/src/fulfillment/workflows/create-fulfillment.ts index 543e7b4509..c059dcc4ba 100644 --- a/packages/core/core-flows/src/fulfillment/workflows/create-fulfillment.ts +++ b/packages/core/core-flows/src/fulfillment/workflows/create-fulfillment.ts @@ -1,5 +1,9 @@ import { FulfillmentDTO, FulfillmentWorkflow } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createFulfillmentStep } from "../steps" export const createFulfillmentWorkflowId = "create-fulfillment-workflow" @@ -7,9 +11,7 @@ export const createFulfillmentWorkflow = createWorkflow( createFulfillmentWorkflowId, ( input: WorkflowData - ): WorkflowData => { - const fulfillment = createFulfillmentStep(input) - - return fulfillment + ): WorkflowResponse => { + return new WorkflowResponse(createFulfillmentStep(input)) } ) diff --git a/packages/core/core-flows/src/fulfillment/workflows/create-return-fulfillment.ts b/packages/core/core-flows/src/fulfillment/workflows/create-return-fulfillment.ts index a0c4e56d11..f6eba7502a 100644 --- a/packages/core/core-flows/src/fulfillment/workflows/create-return-fulfillment.ts +++ b/packages/core/core-flows/src/fulfillment/workflows/create-return-fulfillment.ts @@ -1,5 +1,9 @@ import { FulfillmentDTO, FulfillmentWorkflow } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createReturnFulfillmentStep } from "../steps" export const createReturnFulfillmentWorkflowId = @@ -8,9 +12,7 @@ export const createReturnFulfillmentWorkflow = createWorkflow( createReturnFulfillmentWorkflowId, ( input: WorkflowData - ): WorkflowData => { - const fulfillment = createReturnFulfillmentStep(input) - - return fulfillment + ): WorkflowResponse => { + return new WorkflowResponse(createReturnFulfillmentStep(input)) } ) diff --git a/packages/core/core-flows/src/fulfillment/workflows/create-service-zones.ts b/packages/core/core-flows/src/fulfillment/workflows/create-service-zones.ts index 0fdc9e502f..7a0172c893 100644 --- a/packages/core/core-flows/src/fulfillment/workflows/create-service-zones.ts +++ b/packages/core/core-flows/src/fulfillment/workflows/create-service-zones.ts @@ -1,5 +1,9 @@ -import { FulfillmentWorkflow } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { FulfillmentWorkflow, ServiceZoneDTO } from "@medusajs/types" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createServiceZonesStep } from "../steps" export const createServiceZonesWorkflowId = "create-service-zones-workflow" @@ -7,9 +11,7 @@ export const createServiceZonesWorkflow = createWorkflow( createServiceZonesWorkflowId, ( input: WorkflowData - ): WorkflowData => { - const serviceZones = createServiceZonesStep(input.data) - - return serviceZones + ): WorkflowResponse => { + return new WorkflowResponse(createServiceZonesStep(input.data)) } ) diff --git a/packages/core/core-flows/src/fulfillment/workflows/create-shipment.ts b/packages/core/core-flows/src/fulfillment/workflows/create-shipment.ts index 8d6e608e1c..450a3a83cc 100644 --- a/packages/core/core-flows/src/fulfillment/workflows/create-shipment.ts +++ b/packages/core/core-flows/src/fulfillment/workflows/create-shipment.ts @@ -1,6 +1,7 @@ import { FulfillmentWorkflow } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, transform, } from "@medusajs/workflows-sdk" @@ -18,8 +19,10 @@ export const createShipmentWorkflow = createWorkflow( shipped_at: new Date(), })) - return updateFulfillmentWorkflow.runAsStep({ - input: update, - }) + return new WorkflowResponse( + updateFulfillmentWorkflow.runAsStep({ + input: update, + }) + ) } ) diff --git a/packages/core/core-flows/src/fulfillment/workflows/create-shipping-options.ts b/packages/core/core-flows/src/fulfillment/workflows/create-shipping-options.ts index cc331a328c..bcaae3232f 100644 --- a/packages/core/core-flows/src/fulfillment/workflows/create-shipping-options.ts +++ b/packages/core/core-flows/src/fulfillment/workflows/create-shipping-options.ts @@ -3,6 +3,7 @@ import { createWorkflow, transform, WorkflowData, + WorkflowResponse, } from "@medusajs/workflows-sdk" import { createShippingOptionsPriceSetsStep, @@ -19,7 +20,7 @@ export const createShippingOptionsWorkflow = createWorkflow( input: WorkflowData< FulfillmentWorkflow.CreateShippingOptionsWorkflowInput[] > - ): WorkflowData => { + ): WorkflowResponse => { validateFulfillmentProvidersStep(input) const data = transform(input, (data) => { @@ -81,7 +82,6 @@ export const createShippingOptionsWorkflow = createWorkflow( ) setShippingOptionsPriceSetsStep(normalizedLinkData) - - return createdShippingOptions + return new WorkflowResponse(createdShippingOptions) } ) diff --git a/packages/core/core-flows/src/fulfillment/workflows/create-shipping-profiles.ts b/packages/core/core-flows/src/fulfillment/workflows/create-shipping-profiles.ts index 6d27eca6f2..e0ee38ef86 100644 --- a/packages/core/core-flows/src/fulfillment/workflows/create-shipping-profiles.ts +++ b/packages/core/core-flows/src/fulfillment/workflows/create-shipping-profiles.ts @@ -1,5 +1,9 @@ import { FulfillmentWorkflow } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createShippingProfilesStep } from "../steps" export const createShippingProfilesWorkflowId = @@ -8,9 +12,7 @@ export const createShippingProfilesWorkflow = createWorkflow( createShippingProfilesWorkflowId, ( input: WorkflowData - ): WorkflowData => { - const shippingProfiles = createShippingProfilesStep(input.data) - - return shippingProfiles + ): WorkflowResponse => { + return new WorkflowResponse(createShippingProfilesStep(input.data)) } ) diff --git a/packages/core/core-flows/src/fulfillment/workflows/update-fulfillment.ts b/packages/core/core-flows/src/fulfillment/workflows/update-fulfillment.ts index 2b97b716d5..ce228ba54a 100644 --- a/packages/core/core-flows/src/fulfillment/workflows/update-fulfillment.ts +++ b/packages/core/core-flows/src/fulfillment/workflows/update-fulfillment.ts @@ -1,11 +1,15 @@ import { FulfillmentWorkflow } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateFulfillmentStep } from "../steps" export const updateFulfillmentWorkflowId = "update-fulfillment-workflow" export const updateFulfillmentWorkflow = createWorkflow( updateFulfillmentWorkflowId, (input: WorkflowData) => { - return updateFulfillmentStep(input) + return new WorkflowResponse(updateFulfillmentStep(input)) } ) diff --git a/packages/core/core-flows/src/fulfillment/workflows/update-service-zones.ts b/packages/core/core-flows/src/fulfillment/workflows/update-service-zones.ts index 9255d037f4..9474dd397f 100644 --- a/packages/core/core-flows/src/fulfillment/workflows/update-service-zones.ts +++ b/packages/core/core-flows/src/fulfillment/workflows/update-service-zones.ts @@ -1,5 +1,9 @@ -import { FulfillmentWorkflow } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { FulfillmentWorkflow, ServiceZoneDTO } from "@medusajs/types" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateServiceZonesStep } from "../steps/update-service-zones" export const updateServiceZonesWorkflowId = "update-service-zones-workflow" @@ -7,9 +11,7 @@ export const updateServiceZonesWorkflow = createWorkflow( updateServiceZonesWorkflowId, ( input: WorkflowData - ): WorkflowData => { - const serviceZones = updateServiceZonesStep(input) - - return serviceZones + ): WorkflowResponse => { + return new WorkflowResponse(updateServiceZonesStep(input)) } ) diff --git a/packages/core/core-flows/src/fulfillment/workflows/update-shipping-options.ts b/packages/core/core-flows/src/fulfillment/workflows/update-shipping-options.ts index a91bd00f20..ec089d2a35 100644 --- a/packages/core/core-flows/src/fulfillment/workflows/update-shipping-options.ts +++ b/packages/core/core-flows/src/fulfillment/workflows/update-shipping-options.ts @@ -3,6 +3,7 @@ import { createWorkflow, transform, WorkflowData, + WorkflowResponse, } from "@medusajs/workflows-sdk" import { setShippingOptionsPricesStep, @@ -18,7 +19,7 @@ export const updateShippingOptionsWorkflow = createWorkflow( input: WorkflowData< FulfillmentWorkflow.UpdateShippingOptionsWorkflowInput[] > - ): WorkflowData => { + ): WorkflowResponse => { validateFulfillmentProvidersStep(input) const data = transform(input, (data) => { @@ -66,6 +67,6 @@ export const updateShippingOptionsWorkflow = createWorkflow( normalizedShippingOptionsPrices.shippingOptionsPrices ) - return updatedShippingOptions + return new WorkflowResponse(updatedShippingOptions) } ) diff --git a/packages/core/core-flows/src/fulfillment/workflows/update-shipping-profiles.ts b/packages/core/core-flows/src/fulfillment/workflows/update-shipping-profiles.ts index da61fe2523..cd7b9847d0 100644 --- a/packages/core/core-flows/src/fulfillment/workflows/update-shipping-profiles.ts +++ b/packages/core/core-flows/src/fulfillment/workflows/update-shipping-profiles.ts @@ -1,5 +1,9 @@ import { FulfillmentWorkflow } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateShippingProfilesStep } from "../steps/update-shipping-profiles" export const updateShippingProfilesWorkflowId = @@ -8,9 +12,7 @@ export const updateShippingProfilesWorkflow = createWorkflow( updateShippingProfilesWorkflowId, ( input: WorkflowData - ): WorkflowData => { - const shippingProfiles = updateShippingProfilesStep(input) - - return shippingProfiles + ): WorkflowResponse => { + return new WorkflowResponse(updateShippingProfilesStep(input)) } ) diff --git a/packages/core/core-flows/src/inventory/workflows/bulk-create-delete-levels.ts b/packages/core/core-flows/src/inventory/workflows/bulk-create-delete-levels.ts index 8a7f0fb2ee..79131c0fb0 100644 --- a/packages/core/core-flows/src/inventory/workflows/bulk-create-delete-levels.ts +++ b/packages/core/core-flows/src/inventory/workflows/bulk-create-delete-levels.ts @@ -1,5 +1,9 @@ import { InventoryLevelDTO, InventoryTypes } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createInventoryLevelsStep, deleteInventoryLevelsFromItemAndLocationsStep, @@ -14,9 +18,11 @@ export const bulkCreateDeleteLevelsWorkflowId = "bulk-create-delete-levels-workflow" export const bulkCreateDeleteLevelsWorkflow = createWorkflow( bulkCreateDeleteLevelsWorkflowId, - (input: WorkflowData): WorkflowData => { + ( + input: WorkflowData + ): WorkflowResponse => { deleteInventoryLevelsFromItemAndLocationsStep(input.deletes) - return createInventoryLevelsStep(input.creates) + return new WorkflowResponse(createInventoryLevelsStep(input.creates)) } ) diff --git a/packages/core/core-flows/src/inventory/workflows/create-inventory-items.ts b/packages/core/core-flows/src/inventory/workflows/create-inventory-items.ts index 3bd4f1b641..a203c22098 100644 --- a/packages/core/core-flows/src/inventory/workflows/create-inventory-items.ts +++ b/packages/core/core-flows/src/inventory/workflows/create-inventory-items.ts @@ -1,5 +1,6 @@ import { WorkflowData, + WorkflowResponse, createWorkflow, transform, } from "@medusajs/workflows-sdk" @@ -81,6 +82,6 @@ export const createInventoryItemsWorkflow = createWorkflow( createInventoryLevelsWorkflow.runAsStep(inventoryLevelsInput) - return items + return new WorkflowResponse(items) } ) diff --git a/packages/core/core-flows/src/inventory/workflows/create-inventory-levels.ts b/packages/core/core-flows/src/inventory/workflows/create-inventory-levels.ts index 724db0151e..837509ce92 100644 --- a/packages/core/core-flows/src/inventory/workflows/create-inventory-levels.ts +++ b/packages/core/core-flows/src/inventory/workflows/create-inventory-levels.ts @@ -1,5 +1,9 @@ import { InventoryLevelDTO, InventoryTypes } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createInventoryLevelsStep, validateInventoryLocationsStep, @@ -12,9 +16,13 @@ export const createInventoryLevelsWorkflowId = "create-inventory-levels-workflow" export const createInventoryLevelsWorkflow = createWorkflow( createInventoryLevelsWorkflowId, - (input: WorkflowData): WorkflowData => { + ( + input: WorkflowData + ): WorkflowResponse => { validateInventoryLocationsStep(input.inventory_levels) - return createInventoryLevelsStep(input.inventory_levels) + return new WorkflowResponse( + createInventoryLevelsStep(input.inventory_levels) + ) } ) diff --git a/packages/core/core-flows/src/inventory/workflows/delete-inventory-items.ts b/packages/core/core-flows/src/inventory/workflows/delete-inventory-items.ts index 11115a1f2f..525a7d0e62 100644 --- a/packages/core/core-flows/src/inventory/workflows/delete-inventory-items.ts +++ b/packages/core/core-flows/src/inventory/workflows/delete-inventory-items.ts @@ -1,4 +1,8 @@ -import { createWorkflow, WorkflowData } from "@medusajs/workflows-sdk" +import { + createWorkflow, + WorkflowData, + WorkflowResponse, +} from "@medusajs/workflows-sdk" import { deleteInventoryItemStep } from "../steps" import { removeRemoteLinkStep } from "../../common/steps/remove-remote-links" @@ -7,12 +11,11 @@ import { Modules } from "@medusajs/utils" export const deleteInventoryItemWorkflowId = "delete-inventory-item-workflow" export const deleteInventoryItemWorkflow = createWorkflow( deleteInventoryItemWorkflowId, - (input: WorkflowData): WorkflowData => { + (input: WorkflowData): WorkflowResponse => { deleteInventoryItemStep(input) - removeRemoteLinkStep({ [Modules.INVENTORY]: { inventory_item_id: input }, }) - return input + return new WorkflowResponse(input) } ) diff --git a/packages/core/core-flows/src/inventory/workflows/delete-inventory-levels.ts b/packages/core/core-flows/src/inventory/workflows/delete-inventory-levels.ts index c6bb338c12..3985c850d0 100644 --- a/packages/core/core-flows/src/inventory/workflows/delete-inventory-levels.ts +++ b/packages/core/core-flows/src/inventory/workflows/delete-inventory-levels.ts @@ -1,4 +1,8 @@ -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { deleteInventoryLevelsStep } from "../steps" @@ -9,7 +13,7 @@ export const deleteInventoryLevelsWorkflowId = "delete-inventory-levels-workflow" export const deleteInventoryLevelsWorkflow = createWorkflow( deleteInventoryLevelsWorkflowId, - (input: WorkflowData): WorkflowData => { - return deleteInventoryLevelsStep(input.ids) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(deleteInventoryLevelsStep(input.ids)) } ) diff --git a/packages/core/core-flows/src/inventory/workflows/update-inventory-items.ts b/packages/core/core-flows/src/inventory/workflows/update-inventory-items.ts index cbe235c42b..7a20d5441e 100644 --- a/packages/core/core-flows/src/inventory/workflows/update-inventory-items.ts +++ b/packages/core/core-flows/src/inventory/workflows/update-inventory-items.ts @@ -1,4 +1,8 @@ -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { InventoryTypes } from "@medusajs/types" import { updateInventoryItemsStep } from "../steps" @@ -11,7 +15,7 @@ export const updateInventoryItemsWorkflow = createWorkflow( updateInventoryItemsWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return updateInventoryItemsStep(input.updates) + ): WorkflowResponse => { + return new WorkflowResponse(updateInventoryItemsStep(input.updates)) } ) diff --git a/packages/core/core-flows/src/inventory/workflows/update-inventory-levels.ts b/packages/core/core-flows/src/inventory/workflows/update-inventory-levels.ts index 6f2799d03c..4ae75d5827 100644 --- a/packages/core/core-flows/src/inventory/workflows/update-inventory-levels.ts +++ b/packages/core/core-flows/src/inventory/workflows/update-inventory-levels.ts @@ -1,5 +1,9 @@ import { InventoryLevelDTO, InventoryTypes } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateInventoryLevelsStep } from "../steps/update-inventory-levels" @@ -10,7 +14,9 @@ export const updateInventoryLevelsWorkflowId = "update-inventory-levels-workflow" export const updateInventoryLevelsWorkflow = createWorkflow( updateInventoryLevelsWorkflowId, - (input: WorkflowData): WorkflowData => { - return updateInventoryLevelsStep(input.updates) + ( + input: WorkflowData + ): WorkflowResponse => { + return new WorkflowResponse(updateInventoryLevelsStep(input.updates)) } ) diff --git a/packages/core/core-flows/src/invite/workflows/accept-invite.ts b/packages/core/core-flows/src/invite/workflows/accept-invite.ts index 0f999011c3..bca8d9d07f 100644 --- a/packages/core/core-flows/src/invite/workflows/accept-invite.ts +++ b/packages/core/core-flows/src/invite/workflows/accept-invite.ts @@ -1,6 +1,7 @@ import { InviteWorkflow, UserDTO } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, transform, } from "@medusajs/workflows-sdk" @@ -14,7 +15,7 @@ export const acceptInviteWorkflow = createWorkflow( acceptInviteWorkflowId, ( input: WorkflowData - ): WorkflowData => { + ): WorkflowResponse => { const invite = validateTokenStep(input.invite_token) const createUserInput = transform( @@ -44,6 +45,6 @@ export const acceptInviteWorkflow = createWorkflow( setAuthAppMetadataStep(authUserInput) deleteInvitesStep([invite.id]) - return users + return new WorkflowResponse(users) } ) diff --git a/packages/core/core-flows/src/invite/workflows/create-invites.ts b/packages/core/core-flows/src/invite/workflows/create-invites.ts index 8c82ea468c..02617da5f1 100644 --- a/packages/core/core-flows/src/invite/workflows/create-invites.ts +++ b/packages/core/core-flows/src/invite/workflows/create-invites.ts @@ -1,4 +1,8 @@ -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createInviteStep } from "../steps" import { InviteDTO, InviteWorkflow } from "@medusajs/types" @@ -7,7 +11,7 @@ export const createInvitesWorkflow = createWorkflow( createInvitesWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return createInviteStep(input.invites) + ): WorkflowResponse => { + return new WorkflowResponse(createInviteStep(input.invites)) } ) diff --git a/packages/core/core-flows/src/invite/workflows/refresh-invite-tokens.ts b/packages/core/core-flows/src/invite/workflows/refresh-invite-tokens.ts index 129563be18..ff4369c681 100644 --- a/packages/core/core-flows/src/invite/workflows/refresh-invite-tokens.ts +++ b/packages/core/core-flows/src/invite/workflows/refresh-invite-tokens.ts @@ -1,5 +1,9 @@ import { InviteDTO, InviteWorkflow } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { refreshInviteTokensStep } from "../steps/refresh-invite-tokens" @@ -8,7 +12,7 @@ export const refreshInviteTokensWorkflow = createWorkflow( refreshInviteTokensWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return refreshInviteTokensStep(input.invite_ids) + ): WorkflowResponse => { + return new WorkflowResponse(refreshInviteTokensStep(input.invite_ids)) } ) diff --git a/packages/core/core-flows/src/order/workflows/add-line-items.ts b/packages/core/core-flows/src/order/workflows/add-line-items.ts index c1daeec864..b65c79ea82 100644 --- a/packages/core/core-flows/src/order/workflows/add-line-items.ts +++ b/packages/core/core-flows/src/order/workflows/add-line-items.ts @@ -2,6 +2,7 @@ import { OrderLineItemDTO, OrderWorkflow } from "@medusajs/types" import { MathBN, MedusaError } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createWorkflow, parallelize, transform, @@ -59,7 +60,7 @@ export const addOrderLineItemsWorkflow = createWorkflow( addOrderLineItemsWorkflowId, ( input: WorkflowData - ): WorkflowData => { + ): WorkflowResponse => { const order = useRemoteQueryStep({ entry_point: "orders", fields: [ @@ -141,8 +142,10 @@ export const addOrderLineItemsWorkflow = createWorkflow( prepareLineItems ) - return createOrderLineItemsStep({ - items: lineItems, - }) + return new WorkflowResponse( + createOrderLineItemsStep({ + items: lineItems, + }) + ) } ) diff --git a/packages/core/core-flows/src/order/workflows/archive-orders.ts b/packages/core/core-flows/src/order/workflows/archive-orders.ts index 3419b21882..470ff4c910 100644 --- a/packages/core/core-flows/src/order/workflows/archive-orders.ts +++ b/packages/core/core-flows/src/order/workflows/archive-orders.ts @@ -1,5 +1,9 @@ import { OrderDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { archiveOrdersStep } from "../steps" type ArchiveOrdersStepInput = { @@ -9,9 +13,9 @@ type ArchiveOrdersStepInput = { export const archiveOrderWorkflowId = "archive-order-workflow" export const archiveOrderWorkflow = createWorkflow( archiveOrderWorkflowId, - (input: WorkflowData): WorkflowData => { - const archivedOrders = archiveOrdersStep(input) - - return archivedOrders + ( + input: WorkflowData + ): WorkflowResponse => { + return new WorkflowResponse(archiveOrdersStep(input)) } ) diff --git a/packages/core/core-flows/src/order/workflows/claim/begin-order-claim.ts b/packages/core/core-flows/src/order/workflows/claim/begin-order-claim.ts index e2d3107f0c..7aba30071f 100644 --- a/packages/core/core-flows/src/order/workflows/claim/begin-order-claim.ts +++ b/packages/core/core-flows/src/order/workflows/claim/begin-order-claim.ts @@ -1,6 +1,7 @@ import { OrderChangeDTO, OrderDTO, OrderWorkflow } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -22,7 +23,7 @@ export const beginClaimOrderWorkflow = createWorkflow( beginClaimOrderWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const order: OrderDTO = useRemoteQueryStep({ entry_point: "orders", fields: ["id", "status"], @@ -54,6 +55,6 @@ export const beginClaimOrderWorkflow = createWorkflow( } } ) - return createOrderChangeStep(orderChangeInput) + return new WorkflowResponse(createOrderChangeStep(orderChangeInput)) } ) diff --git a/packages/core/core-flows/src/order/workflows/claim/claim-add-new-item.ts b/packages/core/core-flows/src/order/workflows/claim/claim-add-new-item.ts index 406881d344..28f59e64c0 100644 --- a/packages/core/core-flows/src/order/workflows/claim/claim-add-new-item.ts +++ b/packages/core/core-flows/src/order/workflows/claim/claim-add-new-item.ts @@ -7,6 +7,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -42,7 +43,7 @@ export const orderClaimAddNewItemWorkflow = createWorkflow( orderClaimAddNewItemWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderClaim = useRemoteQueryStep({ entry_point: "order_claim", fields: ["id", "order_id", "canceled_at"], @@ -109,6 +110,6 @@ export const orderClaimAddNewItemWorkflow = createWorkflow( createOrderChangeActionsStep(orderChangeActionInput) - return previewOrderChangeStep(orderClaim.order_id) + return new WorkflowResponse(previewOrderChangeStep(orderClaim.order_id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/claim/claim-item.ts b/packages/core/core-flows/src/order/workflows/claim/claim-item.ts index b5598fb1a2..4465f9b273 100644 --- a/packages/core/core-flows/src/order/workflows/claim/claim-item.ts +++ b/packages/core/core-flows/src/order/workflows/claim/claim-item.ts @@ -7,6 +7,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -41,7 +42,7 @@ export const orderClaimItemWorkflow = createWorkflow( orderClaimItemWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderClaim = useRemoteQueryStep({ entry_point: "order_claim", fields: ["id", "order_id", "canceled_at"], @@ -100,6 +101,6 @@ export const orderClaimItemWorkflow = createWorkflow( createOrderChangeActionsStep(orderChangeActionInput) - return previewOrderChangeStep(orderClaim.order_id) + return new WorkflowResponse(previewOrderChangeStep(orderClaim.order_id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/claim/claim-request-item-return.ts b/packages/core/core-flows/src/order/workflows/claim/claim-request-item-return.ts index d31ccb3f79..b47f7f4d16 100644 --- a/packages/core/core-flows/src/order/workflows/claim/claim-request-item-return.ts +++ b/packages/core/core-flows/src/order/workflows/claim/claim-request-item-return.ts @@ -8,6 +8,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -52,7 +53,7 @@ export const orderClaimRequestItemReturnWorkflow = createWorkflow( orderClaimRequestItemReturnWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderClaim = useRemoteQueryStep({ entry_point: "order_claim", fields: ["id", "order_id", "return_id", "canceled_at"], @@ -165,6 +166,6 @@ export const orderClaimRequestItemReturnWorkflow = createWorkflow( createOrderChangeActionsStep(orderChangeActionInput) - return previewOrderChangeStep(orderClaim.order_id) + return new WorkflowResponse(previewOrderChangeStep(orderClaim.order_id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/claim/confirm-claim-request.ts b/packages/core/core-flows/src/order/workflows/claim/confirm-claim-request.ts index 0c2c7634b3..fba5dc014e 100644 --- a/packages/core/core-flows/src/order/workflows/claim/confirm-claim-request.ts +++ b/packages/core/core-flows/src/order/workflows/claim/confirm-claim-request.ts @@ -8,6 +8,7 @@ import { import { ChangeActionType, Modules, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, parallelize, @@ -167,7 +168,7 @@ function extractShippingOption({ orderPreview, orderClaim, returnId }) { export const confirmClaimRequestWorkflowId = "confirm-claim-request" export const confirmClaimRequestWorkflow = createWorkflow( confirmClaimRequestWorkflowId, - function (input: WorkflowInput): WorkflowData { + function (input: WorkflowInput): WorkflowResponse { const orderClaim: OrderClaimDTO = useRemoteQueryStep({ entry_point: "order_claim", fields: ["id", "status", "order_id", "canceled_at"], @@ -356,6 +357,6 @@ export const confirmClaimRequestWorkflow = createWorkflow( }) }) - return orderPreview + return new WorkflowResponse(orderPreview) } ) diff --git a/packages/core/core-flows/src/order/workflows/claim/create-claim-shipping-method.ts b/packages/core/core-flows/src/order/workflows/claim/create-claim-shipping-method.ts index b6403c8649..c14856fc06 100644 --- a/packages/core/core-flows/src/order/workflows/claim/create-claim-shipping-method.ts +++ b/packages/core/core-flows/src/order/workflows/claim/create-claim-shipping-method.ts @@ -7,6 +7,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -46,7 +47,7 @@ export const createClaimShippingMethodWorkflow = createWorkflow( claim_id?: string shipping_option_id: string custom_price?: BigNumberInput - }): WorkflowData { + }): WorkflowResponse { const orderClaim: OrderClaimDTO = useRemoteQueryStep({ entry_point: "order_claim", fields: ["id", "status", "order_id", "canceled_at"], @@ -164,6 +165,6 @@ export const createClaimShippingMethodWorkflow = createWorkflow( createOrderChangeActionsStep([orderChangeActionInput]) - return previewOrderChangeStep(order.id) + return new WorkflowResponse(previewOrderChangeStep(order.id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/claim/remove-claim-item-action.ts b/packages/core/core-flows/src/order/workflows/claim/remove-claim-item-action.ts index cebdae442a..64cb5d9ffe 100644 --- a/packages/core/core-flows/src/order/workflows/claim/remove-claim-item-action.ts +++ b/packages/core/core-flows/src/order/workflows/claim/remove-claim-item-action.ts @@ -8,6 +8,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, } from "@medusajs/workflows-sdk" @@ -57,7 +58,7 @@ export const removeItemClaimActionWorkflow = createWorkflow( removeItemClaimActionWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderClaim: OrderClaimDTO = useRemoteQueryStep({ entry_point: "order_claim", fields: ["id", "status", "order_id", "canceled_at"], @@ -91,6 +92,6 @@ export const removeItemClaimActionWorkflow = createWorkflow( deleteOrderChangeActionsStep({ ids: [input.action_id] }) - return previewOrderChangeStep(order.id) + return new WorkflowResponse(previewOrderChangeStep(order.id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/claim/remove-claim-shipping-method.ts b/packages/core/core-flows/src/order/workflows/claim/remove-claim-shipping-method.ts index b1307a13f8..36befa2226 100644 --- a/packages/core/core-flows/src/order/workflows/claim/remove-claim-shipping-method.ts +++ b/packages/core/core-flows/src/order/workflows/claim/remove-claim-shipping-method.ts @@ -2,11 +2,13 @@ import { OrderChangeActionDTO, OrderChangeDTO, OrderClaimDTO, + OrderDTO, OrderWorkflow, } from "@medusajs/types" import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, parallelize, @@ -57,7 +59,7 @@ export const removeClaimShippingMethodWorkflow = createWorkflow( removeClaimShippingMethodWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderClaim: OrderClaimDTO = useRemoteQueryStep({ entry_point: "order_claim", fields: ["id", "status", "order_id", "canceled_at"], @@ -100,6 +102,6 @@ export const removeClaimShippingMethodWorkflow = createWorkflow( deleteOrderShippingMethods({ ids: [dataToRemove.shippingMethodId] }) ) - return previewOrderChangeStep(orderClaim.order_id) + return new WorkflowResponse(previewOrderChangeStep(orderClaim.order_id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/claim/update-claim-add-item.ts b/packages/core/core-flows/src/order/workflows/claim/update-claim-add-item.ts index 28236c9f6b..da71fc95f1 100644 --- a/packages/core/core-flows/src/order/workflows/claim/update-claim-add-item.ts +++ b/packages/core/core-flows/src/order/workflows/claim/update-claim-add-item.ts @@ -8,6 +8,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -61,7 +62,7 @@ export const updateClaimAddItemWorkflow = createWorkflow( updateClaimAddItemWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderClaim: OrderClaimDTO = useRemoteQueryStep({ entry_point: "order_claim", fields: ["id", "status", "order_id", "canceled_at"], @@ -113,6 +114,6 @@ export const updateClaimAddItemWorkflow = createWorkflow( updateOrderChangeActionsStep([updateData]) - return previewOrderChangeStep(order.id) + return new WorkflowResponse(previewOrderChangeStep(order.id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/claim/update-claim-item.ts b/packages/core/core-flows/src/order/workflows/claim/update-claim-item.ts index c828658983..0fe5d79051 100644 --- a/packages/core/core-flows/src/order/workflows/claim/update-claim-item.ts +++ b/packages/core/core-flows/src/order/workflows/claim/update-claim-item.ts @@ -8,6 +8,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -61,7 +62,7 @@ export const updateClaimItemWorkflow = createWorkflow( updateClaimItemWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderClaim: OrderClaimDTO = useRemoteQueryStep({ entry_point: "order_claim", fields: ["id", "status", "order_id", "canceled_at"], @@ -113,6 +114,6 @@ export const updateClaimItemWorkflow = createWorkflow( updateOrderChangeActionsStep([updateData]) - return previewOrderChangeStep(order.id) + return new WorkflowResponse(previewOrderChangeStep(order.id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/claim/update-claim-shipping-method.ts b/packages/core/core-flows/src/order/workflows/claim/update-claim-shipping-method.ts index 8e65e92130..c4b07d5cb7 100644 --- a/packages/core/core-flows/src/order/workflows/claim/update-claim-shipping-method.ts +++ b/packages/core/core-flows/src/order/workflows/claim/update-claim-shipping-method.ts @@ -2,11 +2,13 @@ import { OrderChangeActionDTO, OrderChangeDTO, OrderClaimDTO, + OrderDTO, OrderWorkflow, } from "@medusajs/types" import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, parallelize, @@ -59,7 +61,7 @@ export const updateClaimShippingMethodWorkflow = createWorkflow( updateClaimShippingMethodWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderClaim: OrderClaimDTO = useRemoteQueryStep({ entry_point: "order_claim", fields: ["id", "status", "order_id", "canceled_at"], @@ -115,6 +117,6 @@ export const updateClaimShippingMethodWorkflow = createWorkflow( updateOrderShippingMethodsStep([updateData.shippingMethod!]) ) - return previewOrderChangeStep(orderClaim.order_id) + return new WorkflowResponse(previewOrderChangeStep(orderClaim.order_id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/complete-orders.ts b/packages/core/core-flows/src/order/workflows/complete-orders.ts index e8ac7c7e44..9725fa1c64 100644 --- a/packages/core/core-flows/src/order/workflows/complete-orders.ts +++ b/packages/core/core-flows/src/order/workflows/complete-orders.ts @@ -1,5 +1,9 @@ import { OrderDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { completeOrdersStep } from "../steps" type CompleteOrdersStepInput = { @@ -9,12 +13,9 @@ type CompleteOrdersStepInput = { export const completeOrderWorkflowId = "complete-order-workflow" export const completeOrderWorkflow = createWorkflow( completeOrderWorkflowId, - (input: WorkflowData): WorkflowData => { - const completedOrders = completeOrdersStep(input) - - // TODO: Emit event "OrderModuleService.Order.COMPLETED" - // id + no_notification - - return completedOrders + ( + input: WorkflowData + ): WorkflowResponse => { + return new WorkflowResponse(completeOrdersStep(input)) } ) diff --git a/packages/core/core-flows/src/order/workflows/create-fulfillment.ts b/packages/core/core-flows/src/order/workflows/create-fulfillment.ts index 2bd7b8c6b4..c892dea234 100644 --- a/packages/core/core-flows/src/order/workflows/create-fulfillment.ts +++ b/packages/core/core-flows/src/order/workflows/create-fulfillment.ts @@ -9,6 +9,7 @@ import { import { MathBN, MedusaError, Modules } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, parallelize, @@ -193,7 +194,7 @@ export const createOrderFulfillmentWorkflow = createWorkflow( createOrderFulfillmentWorkflowId, ( input: WorkflowData - ): WorkflowData => { + ): WorkflowResponse => { const order: OrderDTO = useRemoteQueryStep({ entry_point: "orders", fields: [ @@ -296,6 +297,6 @@ export const createOrderFulfillmentWorkflow = createWorkflow( ) // trigger event OrderModuleService.Events.FULFILLMENT_CREATED - return fulfillment + return new WorkflowResponse(fulfillment) } ) diff --git a/packages/core/core-flows/src/order/workflows/create-order-change-actions.ts b/packages/core/core-flows/src/order/workflows/create-order-change-actions.ts index 9a5d8ab8e7..5f9a1d0585 100644 --- a/packages/core/core-flows/src/order/workflows/create-order-change-actions.ts +++ b/packages/core/core-flows/src/order/workflows/create-order-change-actions.ts @@ -2,7 +2,11 @@ import { CreateOrderChangeActionDTO, OrderChangeActionDTO, } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createOrderChangeActionsStep } from "../steps" export const createOrderChangeActionsWorkflowId = "create-order-change-actions" @@ -10,7 +14,7 @@ export const createOrderChangeActionsWorkflow = createWorkflow( createOrderChangeActionsWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return createOrderChangeActionsStep(input) + ): WorkflowResponse => { + return new WorkflowResponse(createOrderChangeActionsStep(input)) } ) diff --git a/packages/core/core-flows/src/order/workflows/create-order-change.ts b/packages/core/core-flows/src/order/workflows/create-order-change.ts index 9d76397e6a..f07af69b6a 100644 --- a/packages/core/core-flows/src/order/workflows/create-order-change.ts +++ b/packages/core/core-flows/src/order/workflows/create-order-change.ts @@ -1,11 +1,17 @@ import { CreateOrderChangeDTO, OrderChangeDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createOrderChangeStep } from "../steps" export const createOrderChangeWorkflowId = "create-order-change" export const createOrderChangeWorkflow = createWorkflow( createOrderChangeWorkflowId, - (input: WorkflowData): WorkflowData => { - return createOrderChangeStep(input) + ( + input: WorkflowData + ): WorkflowResponse => { + return new WorkflowResponse(createOrderChangeStep(input)) } ) diff --git a/packages/core/core-flows/src/order/workflows/create-orders.ts b/packages/core/core-flows/src/order/workflows/create-orders.ts index c2273832fc..b984e3d728 100644 --- a/packages/core/core-flows/src/order/workflows/create-orders.ts +++ b/packages/core/core-flows/src/order/workflows/create-orders.ts @@ -2,6 +2,7 @@ import { CreateOrderDTO, OrderDTO } from "@medusajs/types" import { MathBN, MedusaError, isPresent } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createWorkflow, parallelize, transform, @@ -84,7 +85,7 @@ function getOrderInput(data) { export const createOrdersWorkflowId = "create-orders" export const createOrdersWorkflow = createWorkflow( createOrdersWorkflowId, - (input: WorkflowData): WorkflowData => { + (input: WorkflowData): WorkflowResponse => { const variantIds = transform({ input }, (data) => { return (data.input.items ?? []) .map((item) => item.variant_id) @@ -176,6 +177,6 @@ export const createOrdersWorkflow = createWorkflow( updateOrderTaxLinesStep({ order_id: order.id }) - return order + return new WorkflowResponse(order) } ) diff --git a/packages/core/core-flows/src/order/workflows/exchange/begin-order-exchange.ts b/packages/core/core-flows/src/order/workflows/exchange/begin-order-exchange.ts index 59e9962c0a..d53453ae64 100644 --- a/packages/core/core-flows/src/order/workflows/exchange/begin-order-exchange.ts +++ b/packages/core/core-flows/src/order/workflows/exchange/begin-order-exchange.ts @@ -1,6 +1,7 @@ import { OrderChangeDTO, OrderDTO, OrderWorkflow } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -22,7 +23,7 @@ export const beginExchangeOrderWorkflow = createWorkflow( beginExchangeOrderWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const order: OrderDTO = useRemoteQueryStep({ entry_point: "orders", fields: ["id", "status"], @@ -53,6 +54,6 @@ export const beginExchangeOrderWorkflow = createWorkflow( } } ) - return createOrderChangeStep(orderChangeInput) + return new WorkflowResponse(createOrderChangeStep(orderChangeInput)) } ) diff --git a/packages/core/core-flows/src/order/workflows/exchange/create-exchange-return-shipping-method.ts b/packages/core/core-flows/src/order/workflows/exchange/create-exchange-return-shipping-method.ts index 342fd81c25..a7ca8ea521 100644 --- a/packages/core/core-flows/src/order/workflows/exchange/create-exchange-return-shipping-method.ts +++ b/packages/core/core-flows/src/order/workflows/exchange/create-exchange-return-shipping-method.ts @@ -1,5 +1,6 @@ import { BigNumberInput, + OrderChangeActionDTO, OrderChangeDTO, OrderDTO, OrderExchangeDTO, @@ -7,6 +8,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -41,7 +43,7 @@ export const createExchangeReturnShippingMethodWorkflow = createWorkflow( exchangeId: string shippingOptionId: string customShippingPrice?: BigNumberInput - }): WorkflowData { + }): WorkflowResponse { const orderExchange: OrderExchangeDTO = useRemoteQueryStep({ entry_point: "order_exchange", fields: ["id", "status", "order_id", "return_id"], @@ -148,6 +150,7 @@ export const createExchangeReturnShippingMethodWorkflow = createWorkflow( } ) - return createOrderChangeActionsStep([orderChangeActionInput]) + const response = createOrderChangeActionsStep([orderChangeActionInput]) + return new WorkflowResponse(response) } ) diff --git a/packages/core/core-flows/src/order/workflows/exchange/exchange-add-new-item.ts b/packages/core/core-flows/src/order/workflows/exchange/exchange-add-new-item.ts index 948a217322..b2c1b11c65 100644 --- a/packages/core/core-flows/src/order/workflows/exchange/exchange-add-new-item.ts +++ b/packages/core/core-flows/src/order/workflows/exchange/exchange-add-new-item.ts @@ -7,6 +7,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -43,7 +44,7 @@ export const orderExchangeAddNewItemWorkflow = createWorkflow( orderExchangeAddNewItemWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderExchange = useRemoteQueryStep({ entry_point: "order_exchange", fields: ["id", "order_id", "canceled_at"], @@ -110,6 +111,6 @@ export const orderExchangeAddNewItemWorkflow = createWorkflow( createOrderChangeActionsStep(orderChangeActionInput) - return previewOrderChangeStep(orderExchange.order_id) + return new WorkflowResponse(previewOrderChangeStep(orderExchange.order_id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/exchange/exchange-request-item-return.ts b/packages/core/core-flows/src/order/workflows/exchange/exchange-request-item-return.ts index bb4b0ef1fb..ea8d2697d7 100644 --- a/packages/core/core-flows/src/order/workflows/exchange/exchange-request-item-return.ts +++ b/packages/core/core-flows/src/order/workflows/exchange/exchange-request-item-return.ts @@ -12,6 +12,7 @@ import { transform, when, WorkflowData, + WorkflowResponse, } from "@medusajs/workflows-sdk" import { useRemoteQueryStep } from "../../../common" import { createOrderChangeActionsStep } from "../../steps/create-order-change-actions" @@ -54,7 +55,7 @@ export const orderExchangeRequestItemReturnWorkflow = createWorkflow( orderExchangeRequestItemReturnWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderExchange = useRemoteQueryStep({ entry_point: "order_exchange", fields: ["id", "order_id", "return_id", "canceled_at"], @@ -163,6 +164,6 @@ export const orderExchangeRequestItemReturnWorkflow = createWorkflow( createOrderChangeActionsStep(orderChangeActionInput) - return previewOrderChangeStep(orderExchange.order_id) + return new WorkflowResponse(previewOrderChangeStep(orderExchange.order_id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/get-order-detail.ts b/packages/core/core-flows/src/order/workflows/get-order-detail.ts index 324630c575..794dfca470 100644 --- a/packages/core/core-flows/src/order/workflows/get-order-detail.ts +++ b/packages/core/core-flows/src/order/workflows/get-order-detail.ts @@ -2,6 +2,7 @@ import { OrderDTO, OrderDetailDTO } from "@medusajs/types" import { deduplicate } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createWorkflow, transform, } from "@medusajs/workflows-sdk" @@ -19,7 +20,7 @@ export const getOrderDetailWorkflow = createWorkflow( fields: string[] order_id: string }> - ): WorkflowData => { + ): WorkflowResponse => { const fields = transform(input, ({ fields }) => { return deduplicate([ ...fields, @@ -51,6 +52,6 @@ export const getOrderDetailWorkflow = createWorkflow( return order_ }) - return aggregatedOrder + return new WorkflowResponse(aggregatedOrder) } ) diff --git a/packages/core/core-flows/src/order/workflows/get-orders-list.ts b/packages/core/core-flows/src/order/workflows/get-orders-list.ts index c6875c8615..9a8c6207f8 100644 --- a/packages/core/core-flows/src/order/workflows/get-orders-list.ts +++ b/packages/core/core-flows/src/order/workflows/get-orders-list.ts @@ -2,6 +2,7 @@ import { OrderDTO, OrderDetailDTO } from "@medusajs/types" import { deduplicate } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createWorkflow, transform, } from "@medusajs/workflows-sdk" @@ -26,7 +27,7 @@ export const getOrdersListWorkflow = createWorkflow( fields: string[] variables?: Record }> - ): WorkflowData => { + ): WorkflowResponse => { const fields = transform(input, ({ fields }) => { return deduplicate([ ...fields, @@ -89,6 +90,6 @@ export const getOrdersListWorkflow = createWorkflow( } ) - return aggregatedOrders + return new WorkflowResponse(aggregatedOrders) } ) diff --git a/packages/core/core-flows/src/order/workflows/return/begin-receive-return.ts b/packages/core/core-flows/src/order/workflows/return/begin-receive-return.ts index 9916ecfbc8..0e0f70595e 100644 --- a/packages/core/core-flows/src/order/workflows/return/begin-receive-return.ts +++ b/packages/core/core-flows/src/order/workflows/return/begin-receive-return.ts @@ -6,6 +6,7 @@ import { } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -36,7 +37,7 @@ export const beginReceiveReturnWorkflow = createWorkflow( beginReceiveReturnWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderReturn: ReturnDTO = useRemoteQueryStep({ entry_point: "return", fields: ["id", "status", "order_id", "canceled_at"], @@ -68,6 +69,6 @@ export const beginReceiveReturnWorkflow = createWorkflow( } } ) - return createOrderChangeStep(orderChangeInput) + return new WorkflowResponse(createOrderChangeStep(orderChangeInput)) } ) diff --git a/packages/core/core-flows/src/order/workflows/return/begin-return.ts b/packages/core/core-flows/src/order/workflows/return/begin-return.ts index b93f11651a..86c24f6472 100644 --- a/packages/core/core-flows/src/order/workflows/return/begin-return.ts +++ b/packages/core/core-flows/src/order/workflows/return/begin-return.ts @@ -1,6 +1,7 @@ import { OrderChangeDTO, OrderDTO, OrderWorkflow } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -21,7 +22,7 @@ export const beginReturnOrderWorkflow = createWorkflow( beginReturnOrderWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const order: OrderDTO = useRemoteQueryStep({ entry_point: "orders", fields: ["id", "status"], @@ -53,6 +54,6 @@ export const beginReturnOrderWorkflow = createWorkflow( } } ) - return createOrderChangeStep(orderChangeInput) + return new WorkflowResponse(createOrderChangeStep(orderChangeInput)) } ) diff --git a/packages/core/core-flows/src/order/workflows/return/confirm-receive-return-request.ts b/packages/core/core-flows/src/order/workflows/return/confirm-receive-return-request.ts index 51455be4f6..b22197ad7a 100644 --- a/packages/core/core-flows/src/order/workflows/return/confirm-receive-return-request.ts +++ b/packages/core/core-flows/src/order/workflows/return/confirm-receive-return-request.ts @@ -15,6 +15,7 @@ import { } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, parallelize, @@ -128,7 +129,7 @@ function prepareInventoryUpdate({ orderReturn, returnedQuantityMap }) { export const confirmReturnReceiveWorkflowId = "confirm-return-receive" export const confirmReturnReceiveWorkflow = createWorkflow( confirmReturnReceiveWorkflowId, - function (input: WorkflowInput): WorkflowData { + function (input: WorkflowInput): WorkflowResponse { const orderReturn: ReturnDTO = useRemoteQueryStep({ entry_point: "return", fields: [ @@ -276,6 +277,6 @@ export const confirmReturnReceiveWorkflow = createWorkflow( adjustInventoryLevelsStep(inventoryAdjustment) ) - return previewOrderChangeStep(order.id) + return new WorkflowResponse(previewOrderChangeStep(order.id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/return/confirm-return-request.ts b/packages/core/core-flows/src/order/workflows/return/confirm-return-request.ts index 850b8d97ff..0bfb512cfb 100644 --- a/packages/core/core-flows/src/order/workflows/return/confirm-return-request.ts +++ b/packages/core/core-flows/src/order/workflows/return/confirm-return-request.ts @@ -7,6 +7,7 @@ import { import { ChangeActionType, Modules, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -124,7 +125,7 @@ function extractReturnShippingOptionId({ orderPreview, orderReturn }) { export const confirmReturnRequestWorkflowId = "confirm-return-request" export const confirmReturnRequestWorkflow = createWorkflow( confirmReturnRequestWorkflowId, - function (input: WorkflowInput): WorkflowData { + function (input: WorkflowInput): WorkflowResponse { const orderReturn: ReturnDTO = useRemoteQueryStep({ entry_point: "return", fields: ["id", "status", "order_id", "location_id", "canceled_at"], @@ -234,6 +235,6 @@ export const confirmReturnRequestWorkflow = createWorkflow( confirmOrderChanges({ changes: [orderChange], orderId: order.id }) - return orderPreview + return new WorkflowResponse(orderPreview) } ) diff --git a/packages/core/core-flows/src/order/workflows/return/create-return-shipping-method.ts b/packages/core/core-flows/src/order/workflows/return/create-return-shipping-method.ts index cc3a584f01..a13734bf03 100644 --- a/packages/core/core-flows/src/order/workflows/return/create-return-shipping-method.ts +++ b/packages/core/core-flows/src/order/workflows/return/create-return-shipping-method.ts @@ -7,6 +7,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -47,7 +48,7 @@ export const createReturnShippingMethodWorkflow = createWorkflow( exchange_id?: string shipping_option_id: string custom_price?: BigNumberInput - }): WorkflowData { + }): WorkflowResponse { const orderReturn: ReturnDTO = useRemoteQueryStep({ entry_point: "return", fields: ["id", "status", "order_id", "canceled_at"], @@ -167,6 +168,6 @@ export const createReturnShippingMethodWorkflow = createWorkflow( createOrderChangeActionsStep([orderChangeActionInput]) - return previewOrderChangeStep(order.id) + return new WorkflowResponse(previewOrderChangeStep(order.id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/return/dismiss-item-return-request.ts b/packages/core/core-flows/src/order/workflows/return/dismiss-item-return-request.ts index f35f00fc4d..2f068e114a 100644 --- a/packages/core/core-flows/src/order/workflows/return/dismiss-item-return-request.ts +++ b/packages/core/core-flows/src/order/workflows/return/dismiss-item-return-request.ts @@ -7,6 +7,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -48,7 +49,7 @@ export const dismissItemReturnRequestWorkflow = createWorkflow( dismissItemReturnRequestWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderReturn: ReturnDTO = useRemoteQueryStep({ entry_point: "return", fields: ["id", "status", "order_id", "canceled_at", "items.*"], @@ -102,6 +103,6 @@ export const dismissItemReturnRequestWorkflow = createWorkflow( createOrderChangeActionsStep(orderChangeActionInput) - return previewOrderChangeStep(order.id) + return new WorkflowResponse(previewOrderChangeStep(order.id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/return/receive-complete-return.ts b/packages/core/core-flows/src/order/workflows/return/receive-complete-return.ts index 93ece44023..8a62b198ed 100644 --- a/packages/core/core-flows/src/order/workflows/return/receive-complete-return.ts +++ b/packages/core/core-flows/src/order/workflows/return/receive-complete-return.ts @@ -1,6 +1,7 @@ import { OrderWorkflow } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, } from "@medusajs/workflows-sdk" @@ -35,7 +36,7 @@ export const receiveAndCompleteReturnOrderWorkflow = createWorkflow( receiveAndCompleteReturnOrderWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderReturn: ReturnDTO = useRemoteQueryStep({ entry_point: "returns", fields: ["id", "canceled_at", "items.*"], @@ -46,8 +47,6 @@ export const receiveAndCompleteReturnOrderWorkflow = createWorkflow( validationStep({ orderReturn, input }) - const received = receiveReturnStep(input) - - return received + return new WorkflowResponse(receiveReturnStep(input)) } ) diff --git a/packages/core/core-flows/src/order/workflows/return/receive-item-return-request.ts b/packages/core/core-flows/src/order/workflows/return/receive-item-return-request.ts index 47b0b3ce74..bb4e673fe3 100644 --- a/packages/core/core-flows/src/order/workflows/return/receive-item-return-request.ts +++ b/packages/core/core-flows/src/order/workflows/return/receive-item-return-request.ts @@ -7,6 +7,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -48,7 +49,7 @@ export const receiveItemReturnRequestWorkflow = createWorkflow( receiveItemReturnRequestWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderReturn: ReturnDTO = useRemoteQueryStep({ entry_point: "return", fields: ["id", "status", "order_id", "canceled_at", "items.*"], @@ -102,6 +103,6 @@ export const receiveItemReturnRequestWorkflow = createWorkflow( createOrderChangeActionsStep(orderChangeActionInput) - return previewOrderChangeStep(order.id) + return new WorkflowResponse(previewOrderChangeStep(order.id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/return/remove-item-receive-return-action.ts b/packages/core/core-flows/src/order/workflows/return/remove-item-receive-return-action.ts index 7c444a35dd..30bb798b52 100644 --- a/packages/core/core-flows/src/order/workflows/return/remove-item-receive-return-action.ts +++ b/packages/core/core-flows/src/order/workflows/return/remove-item-receive-return-action.ts @@ -8,6 +8,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, } from "@medusajs/workflows-sdk" @@ -65,7 +66,7 @@ export const removeItemReceiveReturnActionWorkflow = createWorkflow( removeItemReceiveReturnActionWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderReturn: ReturnDTO = useRemoteQueryStep({ entry_point: "return", fields: ["id", "status", "order_id", "canceled_at"], @@ -99,6 +100,6 @@ export const removeItemReceiveReturnActionWorkflow = createWorkflow( deleteOrderChangeActionsStep({ ids: [input.action_id] }) - return previewOrderChangeStep(order.id) + return new WorkflowResponse(previewOrderChangeStep(order.id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/return/remove-item-return-action.ts b/packages/core/core-flows/src/order/workflows/return/remove-item-return-action.ts index f1492843d3..442a3cc81d 100644 --- a/packages/core/core-flows/src/order/workflows/return/remove-item-return-action.ts +++ b/packages/core/core-flows/src/order/workflows/return/remove-item-return-action.ts @@ -8,6 +8,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, } from "@medusajs/workflows-sdk" @@ -59,7 +60,7 @@ export const removeItemReturnActionWorkflow = createWorkflow( removeItemReturnActionWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderReturn: ReturnDTO = useRemoteQueryStep({ entry_point: "return", fields: ["id", "status", "order_id", "canceled_at"], @@ -93,6 +94,6 @@ export const removeItemReturnActionWorkflow = createWorkflow( deleteOrderChangeActionsStep({ ids: [input.action_id] }) - return previewOrderChangeStep(order.id) + return new WorkflowResponse(previewOrderChangeStep(order.id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/return/remove-return-shipping-method.ts b/packages/core/core-flows/src/order/workflows/return/remove-return-shipping-method.ts index 4ea35d0f3c..801874d14e 100644 --- a/packages/core/core-flows/src/order/workflows/return/remove-return-shipping-method.ts +++ b/packages/core/core-flows/src/order/workflows/return/remove-return-shipping-method.ts @@ -1,12 +1,14 @@ import { OrderChangeActionDTO, OrderChangeDTO, + OrderDTO, OrderWorkflow, ReturnDTO, } from "@medusajs/types" import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, parallelize, @@ -57,7 +59,7 @@ export const removeReturnShippingMethodWorkflow = createWorkflow( removeReturnShippingMethodWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderReturn: ReturnDTO = useRemoteQueryStep({ entry_point: "return", fields: ["id", "status", "order_id", "canceled_at"], @@ -100,6 +102,6 @@ export const removeReturnShippingMethodWorkflow = createWorkflow( deleteOrderShippingMethods({ ids: [dataToRemove.shippingMethodId] }) ) - return previewOrderChangeStep(orderReturn.order_id) + return new WorkflowResponse(previewOrderChangeStep(orderReturn.order_id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/return/request-item-return.ts b/packages/core/core-flows/src/order/workflows/return/request-item-return.ts index cc90f9556f..313b35dead 100644 --- a/packages/core/core-flows/src/order/workflows/return/request-item-return.ts +++ b/packages/core/core-flows/src/order/workflows/return/request-item-return.ts @@ -7,6 +7,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -54,7 +55,7 @@ export const requestItemReturnWorkflow = createWorkflow( requestItemReturnWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderReturn: ReturnDTO = useRemoteQueryStep({ entry_point: "return", fields: ["id", "status", "order_id", "canceled_at"], @@ -110,6 +111,6 @@ export const requestItemReturnWorkflow = createWorkflow( createOrderChangeActionsStep(orderChangeActionInput) - return previewOrderChangeStep(order.id) + return new WorkflowResponse(previewOrderChangeStep(order.id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/return/update-receive-item-return-request.ts b/packages/core/core-flows/src/order/workflows/return/update-receive-item-return-request.ts index ea31290ffa..551d96a8f2 100644 --- a/packages/core/core-flows/src/order/workflows/return/update-receive-item-return-request.ts +++ b/packages/core/core-flows/src/order/workflows/return/update-receive-item-return-request.ts @@ -8,6 +8,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -69,7 +70,7 @@ export const updateReceiveItemReturnRequestWorkflow = createWorkflow( updateReceiveItemReturnRequestWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderReturn: ReturnDTO = useRemoteQueryStep({ entry_point: "return", fields: ["id", "status", "order_id", "canceled_at"], @@ -121,6 +122,6 @@ export const updateReceiveItemReturnRequestWorkflow = createWorkflow( updateOrderChangeActionsStep([updateData]) - return previewOrderChangeStep(order.id) + return new WorkflowResponse(previewOrderChangeStep(order.id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/return/update-request-item-return.ts b/packages/core/core-flows/src/order/workflows/return/update-request-item-return.ts index 00eb7d5ea7..7621cbc30d 100644 --- a/packages/core/core-flows/src/order/workflows/return/update-request-item-return.ts +++ b/packages/core/core-flows/src/order/workflows/return/update-request-item-return.ts @@ -8,6 +8,7 @@ import { import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -74,7 +75,7 @@ export const updateRequestItemReturnWorkflow = createWorkflow( updateRequestItemReturnWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderReturn: ReturnDTO = useRemoteQueryStep({ entry_point: "return", fields: ["id", "status", "order_id", "canceled_at"], @@ -127,6 +128,6 @@ export const updateRequestItemReturnWorkflow = createWorkflow( updateOrderChangeActionsStep([updateData]) - return previewOrderChangeStep(order.id) + return new WorkflowResponse(previewOrderChangeStep(order.id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/return/update-return-shipping-method.ts b/packages/core/core-flows/src/order/workflows/return/update-return-shipping-method.ts index b755c75c66..9d909b24cc 100644 --- a/packages/core/core-flows/src/order/workflows/return/update-return-shipping-method.ts +++ b/packages/core/core-flows/src/order/workflows/return/update-return-shipping-method.ts @@ -1,12 +1,14 @@ import { OrderChangeActionDTO, OrderChangeDTO, + OrderDTO, OrderWorkflow, ReturnDTO, } from "@medusajs/types" import { ChangeActionType, OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, parallelize, @@ -59,7 +61,7 @@ export const updateReturnShippingMethodWorkflow = createWorkflow( updateReturnShippingMethodWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderReturn: ReturnDTO = useRemoteQueryStep({ entry_point: "return", fields: ["id", "status", "order_id", "canceled_at"], @@ -115,6 +117,6 @@ export const updateReturnShippingMethodWorkflow = createWorkflow( updateOrderShippingMethodsStep([updateData.shippingMethod!]) ) - return previewOrderChangeStep(orderReturn.order_id) + return new WorkflowResponse(previewOrderChangeStep(orderReturn.order_id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/return/update-return.ts b/packages/core/core-flows/src/order/workflows/return/update-return.ts index 6b3c423f89..ea1d3a37f2 100644 --- a/packages/core/core-flows/src/order/workflows/return/update-return.ts +++ b/packages/core/core-flows/src/order/workflows/return/update-return.ts @@ -1,7 +1,13 @@ -import { OrderChangeDTO, OrderWorkflow, ReturnDTO } from "@medusajs/types" +import { + OrderChangeDTO, + OrderDTO, + OrderWorkflow, + ReturnDTO, +} from "@medusajs/types" import { OrderChangeStatus } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -33,7 +39,7 @@ export const updateReturnWorkflow = createWorkflow( updateReturnWorkflowId, function ( input: WorkflowData - ): WorkflowData { + ): WorkflowResponse { const orderReturn: ReturnDTO = useRemoteQueryStep({ entry_point: "return", fields: ["id", "status", "order_id", "canceled_at"], @@ -68,6 +74,6 @@ export const updateReturnWorkflow = createWorkflow( updateReturnsStep([updateData]) - return previewOrderChangeStep(orderReturn.order_id) + return new WorkflowResponse(previewOrderChangeStep(orderReturn.order_id)) } ) diff --git a/packages/core/core-flows/src/order/workflows/update-order-change-actions.ts b/packages/core/core-flows/src/order/workflows/update-order-change-actions.ts index 785449140f..6343c2d6ec 100644 --- a/packages/core/core-flows/src/order/workflows/update-order-change-actions.ts +++ b/packages/core/core-flows/src/order/workflows/update-order-change-actions.ts @@ -2,7 +2,11 @@ import { OrderChangeActionDTO, UpdateOrderChangeActionDTO, } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateOrderChangeActionsStep } from "../steps" export const updateOrderChangeActionsWorkflowId = "update-order-change-actions" @@ -10,7 +14,7 @@ export const updateOrderChangeActionsWorkflow = createWorkflow( updateOrderChangeActionsWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return updateOrderChangeActionsStep(input) + ): WorkflowResponse => { + return new WorkflowResponse(updateOrderChangeActionsStep(input)) } ) diff --git a/packages/core/core-flows/src/payment-collection/workflows/create-payment-session.ts b/packages/core/core-flows/src/payment-collection/workflows/create-payment-session.ts index f2176f40d8..b543f3a228 100644 --- a/packages/core/core-flows/src/payment-collection/workflows/create-payment-session.ts +++ b/packages/core/core-flows/src/payment-collection/workflows/create-payment-session.ts @@ -1,6 +1,7 @@ import { PaymentProviderContext, PaymentSessionDTO } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, parallelize, transform, @@ -19,7 +20,7 @@ interface WorkflowInput { export const createPaymentSessionsWorkflowId = "create-payment-sessions" export const createPaymentSessionsWorkflow = createWorkflow( createPaymentSessionsWorkflowId, - (input: WorkflowData): WorkflowData => { + (input: WorkflowData): WorkflowResponse => { const paymentCollection = useRemoteQueryStep({ entry_point: "payment_collection", fields: ["id", "amount", "currency_code", "payment_sessions.*"], @@ -62,6 +63,6 @@ export const createPaymentSessionsWorkflow = createWorkflow( }) ) - return created + return new WorkflowResponse(created) } ) diff --git a/packages/core/core-flows/src/payment-collection/workflows/delete-payment-sessions.ts b/packages/core/core-flows/src/payment-collection/workflows/delete-payment-sessions.ts index f87889cc43..0bf3f7befc 100644 --- a/packages/core/core-flows/src/payment-collection/workflows/delete-payment-sessions.ts +++ b/packages/core/core-flows/src/payment-collection/workflows/delete-payment-sessions.ts @@ -1,4 +1,8 @@ -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { deletePaymentSessionsStep, validateDeletedPaymentSessionsStep, @@ -19,6 +23,6 @@ export const deletePaymentSessionsWorkflow = createWorkflow( idsDeleted, }) - return idsDeleted + return new WorkflowResponse(idsDeleted) } ) diff --git a/packages/core/core-flows/src/payment/workflows/capture-payment.ts b/packages/core/core-flows/src/payment/workflows/capture-payment.ts index e17722ce68..a4e1a97e46 100644 --- a/packages/core/core-flows/src/payment/workflows/capture-payment.ts +++ b/packages/core/core-flows/src/payment/workflows/capture-payment.ts @@ -1,6 +1,10 @@ import { BigNumberInput, PaymentDTO } from "@medusajs/types" import { PaymentEvents } from "@medusajs/utils" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { emitEventStep } from "../../common" import { capturePaymentStep } from "../steps/capture-payment" @@ -13,7 +17,7 @@ export const capturePaymentWorkflow = createWorkflow( captured_by?: string amount?: BigNumberInput }> - ): WorkflowData => { + ): WorkflowResponse => { const payment = capturePaymentStep(input) emitEventStep({ @@ -21,6 +25,6 @@ export const capturePaymentWorkflow = createWorkflow( data: { id: payment.id }, }) - return payment + return new WorkflowResponse(payment) } ) diff --git a/packages/core/core-flows/src/payment/workflows/refund-payment.ts b/packages/core/core-flows/src/payment/workflows/refund-payment.ts index 190a96ac2d..d871a7c126 100644 --- a/packages/core/core-flows/src/payment/workflows/refund-payment.ts +++ b/packages/core/core-flows/src/payment/workflows/refund-payment.ts @@ -1,6 +1,10 @@ import { BigNumberInput } from "@medusajs/types" import { PaymentEvents } from "@medusajs/utils" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { emitEventStep } from "../../common" import { refundPaymentStep } from "../steps/refund-payment" @@ -21,6 +25,6 @@ export const refundPaymentWorkflow = createWorkflow( data: { id: payment.id }, }) - return payment + return new WorkflowResponse(payment) } ) diff --git a/packages/core/core-flows/src/price-list/workflows/batch-price-list-prices.ts b/packages/core/core-flows/src/price-list/workflows/batch-price-list-prices.ts index e1446df906..bf5c850984 100644 --- a/packages/core/core-flows/src/price-list/workflows/batch-price-list-prices.ts +++ b/packages/core/core-flows/src/price-list/workflows/batch-price-list-prices.ts @@ -4,6 +4,7 @@ import { } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, parallelize, transform, @@ -19,7 +20,7 @@ export const batchPriceListPricesWorkflow = createWorkflow( input: WorkflowData<{ data: BatchPriceListPricesWorkflowDTO }> - ): WorkflowData => { + ): WorkflowResponse => { const createInput = transform({ input: input.data }, (data) => [ { id: data.input.id, prices: data.input.create }, ]) @@ -34,6 +35,8 @@ export const batchPriceListPricesWorkflow = createWorkflow( removePriceListPricesWorkflowStep(input.data.delete) ) - return transform({ created, updated, deleted }, (data) => data) + return new WorkflowResponse( + transform({ created, updated, deleted }, (data) => data) + ) } ) diff --git a/packages/core/core-flows/src/price-list/workflows/create-price-list-prices.ts b/packages/core/core-flows/src/price-list/workflows/create-price-list-prices.ts index a6e72317f1..849771c9b3 100644 --- a/packages/core/core-flows/src/price-list/workflows/create-price-list-prices.ts +++ b/packages/core/core-flows/src/price-list/workflows/create-price-list-prices.ts @@ -1,6 +1,7 @@ import { CreatePriceListPricesWorkflowDTO, PricingTypes } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, parallelize, } from "@medusajs/workflows-sdk" @@ -15,15 +16,17 @@ export const createPriceListPricesWorkflow = createWorkflow( input: WorkflowData<{ data: CreatePriceListPricesWorkflowDTO[] }> - ): WorkflowData => { + ): WorkflowResponse => { const [_, variantPriceMap] = parallelize( validatePriceListsStep(input.data), validateVariantPriceLinksStep(input.data) ) - return createPriceListPricesStep({ - data: input.data, - variant_price_map: variantPriceMap, - }) + return new WorkflowResponse( + createPriceListPricesStep({ + data: input.data, + variant_price_map: variantPriceMap, + }) + ) } ) diff --git a/packages/core/core-flows/src/price-list/workflows/create-price-lists.ts b/packages/core/core-flows/src/price-list/workflows/create-price-lists.ts index f45d382122..ad8193b41c 100644 --- a/packages/core/core-flows/src/price-list/workflows/create-price-lists.ts +++ b/packages/core/core-flows/src/price-list/workflows/create-price-lists.ts @@ -1,5 +1,9 @@ import { CreatePriceListWorkflowInputDTO, PriceListDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createPriceListsStep, validateVariantPriceLinksStep } from "../steps" type WorkflowInput = { price_lists_data: CreatePriceListWorkflowInputDTO[] } @@ -7,14 +11,16 @@ type WorkflowInput = { price_lists_data: CreatePriceListWorkflowInputDTO[] } export const createPriceListsWorkflowId = "create-price-lists" export const createPriceListsWorkflow = createWorkflow( createPriceListsWorkflowId, - (input: WorkflowData): WorkflowData => { + (input: WorkflowData): WorkflowResponse => { const variantPriceMap = validateVariantPriceLinksStep( input.price_lists_data ) - return createPriceListsStep({ - data: input.price_lists_data, - variant_price_map: variantPriceMap, - }) + return new WorkflowResponse( + createPriceListsStep({ + data: input.price_lists_data, + variant_price_map: variantPriceMap, + }) + ) } ) diff --git a/packages/core/core-flows/src/price-list/workflows/remove-price-list-prices.ts b/packages/core/core-flows/src/price-list/workflows/remove-price-list-prices.ts index 41eb35cc21..2b6c30f1b1 100644 --- a/packages/core/core-flows/src/price-list/workflows/remove-price-list-prices.ts +++ b/packages/core/core-flows/src/price-list/workflows/remove-price-list-prices.ts @@ -1,10 +1,14 @@ -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { removePriceListPricesStep } from "../steps/remove-price-list-prices" export const removePriceListPricesWorkflowId = "remove-price-list-prices" export const removePriceListPricesWorkflow = createWorkflow( removePriceListPricesWorkflowId, - (input: WorkflowData<{ ids: string[] }>): WorkflowData => { - return removePriceListPricesStep(input.ids) + (input: WorkflowData<{ ids: string[] }>): WorkflowResponse => { + return new WorkflowResponse(removePriceListPricesStep(input.ids)) } ) diff --git a/packages/core/core-flows/src/price-list/workflows/update-price-list-prices.ts b/packages/core/core-flows/src/price-list/workflows/update-price-list-prices.ts index 1c686f10ca..5686807af8 100644 --- a/packages/core/core-flows/src/price-list/workflows/update-price-list-prices.ts +++ b/packages/core/core-flows/src/price-list/workflows/update-price-list-prices.ts @@ -1,6 +1,7 @@ import { PricingTypes, UpdatePriceListPricesWorkflowDTO } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, parallelize, } from "@medusajs/workflows-sdk" @@ -15,15 +16,17 @@ export const updatePriceListPricesWorkflow = createWorkflow( input: WorkflowData<{ data: UpdatePriceListPricesWorkflowDTO[] }> - ): WorkflowData => { + ): WorkflowResponse => { const [_, variantPriceMap] = parallelize( validatePriceListsStep(input.data), validateVariantPriceLinksStep(input.data) ) - return updatePriceListPricesStep({ - data: input.data, - variant_price_map: variantPriceMap, - }) + return new WorkflowResponse( + updatePriceListPricesStep({ + data: input.data, + variant_price_map: variantPriceMap, + }) + ) } ) diff --git a/packages/core/core-flows/src/pricing/workflows/create-price-preferences.ts b/packages/core/core-flows/src/pricing/workflows/create-price-preferences.ts index b3998e980d..c19d51102f 100644 --- a/packages/core/core-flows/src/pricing/workflows/create-price-preferences.ts +++ b/packages/core/core-flows/src/pricing/workflows/create-price-preferences.ts @@ -1,5 +1,9 @@ import { PricingWorkflow } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createPricePreferencesStep } from "../steps" type WorkflowInputData = PricingWorkflow.CreatePricePreferencesWorkflowInput[] @@ -8,6 +12,6 @@ export const createPricePreferencesWorkflowId = "create-price-preferences" export const createPricePreferencesWorkflow = createWorkflow( createPricePreferencesWorkflowId, (input: WorkflowData) => { - return createPricePreferencesStep(input) + return new WorkflowResponse(createPricePreferencesStep(input)) } ) diff --git a/packages/core/core-flows/src/pricing/workflows/update-price-preferences.ts b/packages/core/core-flows/src/pricing/workflows/update-price-preferences.ts index f090954f4e..dbb2f1d9c0 100644 --- a/packages/core/core-flows/src/pricing/workflows/update-price-preferences.ts +++ b/packages/core/core-flows/src/pricing/workflows/update-price-preferences.ts @@ -1,5 +1,9 @@ import { PricingWorkflow } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updatePricePreferencesStep } from "../steps" type WorkflowInputData = PricingWorkflow.UpdatePricePreferencesWorkflowInput @@ -8,6 +12,6 @@ export const updatePricePreferencesWorkflowId = "update-price-preferences" export const updatePricePreferencesWorkflow = createWorkflow( updatePricePreferencesWorkflowId, (input: WorkflowData) => { - return updatePricePreferencesStep(input) + return new WorkflowResponse(updatePricePreferencesStep(input)) } ) 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 2eb72a3c1a..2ce1896114 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,5 +1,9 @@ import { ProductCategoryWorkflow } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createProductCategoriesStep } from "../steps" type WorkflowInputData = @@ -9,6 +13,6 @@ export const createProductCategoriesWorkflowId = "create-product-categories" export const createProductCategoriesWorkflow = createWorkflow( createProductCategoriesWorkflowId, (input: WorkflowData) => { - return createProductCategoriesStep(input) + return new WorkflowResponse(createProductCategoriesStep(input)) } ) 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 44b7881b93..4c0f597d1c 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,5 +1,9 @@ import { ProductCategoryWorkflow } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateProductCategoriesStep } from "../steps" type WorkflowInputData = @@ -9,6 +13,6 @@ export const updateProductCategoriesWorkflowId = "update-product-categories" export const updateProductCategoriesWorkflow = createWorkflow( updateProductCategoriesWorkflowId, (input: WorkflowData) => { - return updateProductCategoriesStep(input) + return new WorkflowResponse(updateProductCategoriesStep(input)) } ) diff --git a/packages/core/core-flows/src/product/workflows/batch-product-variants.ts b/packages/core/core-flows/src/product/workflows/batch-product-variants.ts index dea812b8cb..ff264a6ab7 100644 --- a/packages/core/core-flows/src/product/workflows/batch-product-variants.ts +++ b/packages/core/core-flows/src/product/workflows/batch-product-variants.ts @@ -1,5 +1,6 @@ import { WorkflowData, + WorkflowResponse, createWorkflow, parallelize, transform, @@ -25,7 +26,7 @@ export const batchProductVariantsWorkflow = createWorkflow( UpdateProductVariantWorkflowInputDTO > > - ): WorkflowData> => { + ): WorkflowResponse> => { const normalizedInput = transform({ input }, (data) => { return { create: data.input.create ?? [], @@ -46,7 +47,7 @@ export const batchProductVariantsWorkflow = createWorkflow( }) ) - return transform({ res, input }, (data) => { + const response = transform({ res, input }, (data) => { return { created: data.res[0], updated: data.res[1], @@ -57,5 +58,7 @@ export const batchProductVariantsWorkflow = createWorkflow( }, } }) + + return new WorkflowResponse(response) } ) diff --git a/packages/core/core-flows/src/product/workflows/batch-products.ts b/packages/core/core-flows/src/product/workflows/batch-products.ts index 5da5712a10..e3ec99d9cf 100644 --- a/packages/core/core-flows/src/product/workflows/batch-products.ts +++ b/packages/core/core-flows/src/product/workflows/batch-products.ts @@ -7,6 +7,7 @@ import { } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, parallelize, transform, @@ -25,7 +26,7 @@ export const batchProductsWorkflow = createWorkflow( UpdateProductWorkflowInputDTO > > - ): WorkflowData> => { + ): WorkflowResponse> => { const res = parallelize( createProductsWorkflow.runAsStep({ input: { products: input.create ?? [] }, @@ -38,16 +39,18 @@ export const batchProductsWorkflow = createWorkflow( }) ) - return transform({ res, input }, (data) => { - return { - created: data.res[0], - updated: data.res[1], - deleted: { - ids: data.input.delete ?? [], - object: "product", - deleted: true, - }, - } - }) + return new WorkflowResponse( + transform({ res, input }, (data) => { + return { + created: data.res[0], + updated: data.res[1], + deleted: { + ids: data.input.delete ?? [], + object: "product", + deleted: true, + }, + } + }) + ) } ) 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 a2c796be6c..b11d6d0475 100644 --- a/packages/core/core-flows/src/product/workflows/create-collections.ts +++ b/packages/core/core-flows/src/product/workflows/create-collections.ts @@ -1,5 +1,9 @@ import { ProductTypes } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createCollectionsStep } from "../steps" type WorkflowInput = { collections: ProductTypes.CreateProductCollectionDTO[] } @@ -9,7 +13,7 @@ export const createCollectionsWorkflow = createWorkflow( createCollectionsWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return createCollectionsStep(input.collections) + ): WorkflowResponse => { + return new WorkflowResponse(createCollectionsStep(input.collections)) } ) diff --git a/packages/core/core-flows/src/product/workflows/create-product-options.ts b/packages/core/core-flows/src/product/workflows/create-product-options.ts index 107176f358..37d69fa185 100644 --- a/packages/core/core-flows/src/product/workflows/create-product-options.ts +++ b/packages/core/core-flows/src/product/workflows/create-product-options.ts @@ -1,5 +1,9 @@ import { ProductTypes } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createProductOptionsStep } from "../steps" type WorkflowInput = { product_options: ProductTypes.CreateProductOptionDTO[] } @@ -9,7 +13,7 @@ export const createProductOptionsWorkflow = createWorkflow( createProductOptionsWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return createProductOptionsStep(input.product_options) + ): WorkflowResponse => { + return new WorkflowResponse(createProductOptionsStep(input.product_options)) } ) diff --git a/packages/core/core-flows/src/product/workflows/create-product-tags.ts b/packages/core/core-flows/src/product/workflows/create-product-tags.ts index e573f7341a..da4cd71100 100644 --- a/packages/core/core-flows/src/product/workflows/create-product-tags.ts +++ b/packages/core/core-flows/src/product/workflows/create-product-tags.ts @@ -1,5 +1,9 @@ import { ProductTypes } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createProductTagsStep } from "../steps" type WorkflowInput = { product_tags: ProductTypes.CreateProductTagDTO[] } @@ -9,7 +13,7 @@ export const createProductTagsWorkflow = createWorkflow( createProductTagsWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return createProductTagsStep(input.product_tags) + ): WorkflowResponse => { + return new WorkflowResponse(createProductTagsStep(input.product_tags)) } ) diff --git a/packages/core/core-flows/src/product/workflows/create-product-types.ts b/packages/core/core-flows/src/product/workflows/create-product-types.ts index 40ff160b4c..5c94edb1d9 100644 --- a/packages/core/core-flows/src/product/workflows/create-product-types.ts +++ b/packages/core/core-flows/src/product/workflows/create-product-types.ts @@ -1,5 +1,9 @@ import { ProductTypes } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createProductTypesStep } from "../steps" type WorkflowInput = { product_types: ProductTypes.CreateProductTypeDTO[] } @@ -9,7 +13,7 @@ export const createProductTypesWorkflow = createWorkflow( createProductTypesWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return createProductTypesStep(input.product_types) + ): WorkflowResponse => { + return new WorkflowResponse(createProductTypesStep(input.product_types)) } ) 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 8027e494fb..3df7bc4aaa 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 @@ -2,6 +2,7 @@ import { LinkDefinition } from "@medusajs/modules-sdk" import { InventoryTypes, PricingTypes, ProductTypes } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, transform, } from "@medusajs/workflows-sdk" @@ -121,7 +122,7 @@ export const createProductVariantsWorkflow = createWorkflow( createProductVariantsWorkflowId, ( input: WorkflowData - ): WorkflowData => { + ): WorkflowResponse => { // Passing prices to the product module will fail, we want to keep them for after the variant is created. const variantsWithoutPrices = transform({ input }, (data) => data.input.product_variants.map((v) => ({ @@ -211,7 +212,7 @@ export const createProductVariantsWorkflow = createWorkflow( createVariantPricingLinkStep(variantAndPriceSetLinks) - return transform( + const response = transform( { variantAndPriceSets, }, @@ -222,5 +223,7 @@ export const createProductVariantsWorkflow = createWorkflow( })) } ) + + return new WorkflowResponse(response) } ) 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 e5304d4731..7283715a41 100644 --- a/packages/core/core-flows/src/product/workflows/create-products.ts +++ b/packages/core/core-flows/src/product/workflows/create-products.ts @@ -6,6 +6,7 @@ import { import { isPresent } from "@medusajs/utils" import { WorkflowData, + WorkflowResponse, createWorkflow, transform, } from "@medusajs/workflows-sdk" @@ -22,7 +23,7 @@ export const createProductsWorkflow = createWorkflow( createProductsWorkflowId, ( input: WorkflowData - ): WorkflowData => { + ): WorkflowResponse => { // Passing prices to the product module will fail, we want to keep them for after the product is created. const productWithoutExternalRelations = transform({ input }, (data) => data.input.products.map((p) => ({ @@ -76,22 +77,27 @@ export const createProductsWorkflow = createWorkflow( const createdVariants = createProductVariantsWorkflow.runAsStep(variantsInput) - return transform({ createdVariants, input, createdProducts }, (data) => { - const variantMap: Record = {} + const response = transform( + { createdVariants, input, createdProducts }, + (data) => { + const variantMap: Record = {} - for (const variant of data.createdVariants) { - const array = variantMap[variant.product_id!] || [] + for (const variant of data.createdVariants) { + const array = variantMap[variant.product_id!] || [] - array.push(variant) + array.push(variant) - variantMap[variant.product_id!] = array + variantMap[variant.product_id!] = array + } + + for (const product of data.createdProducts) { + product.variants = variantMap[product.id] || [] + } + + return data.createdProducts } + ) - for (const product of data.createdProducts) { - product.variants = variantMap[product.id] || [] - } - - return data.createdProducts - }) + return new WorkflowResponse(response) } ) diff --git a/packages/core/core-flows/src/product/workflows/import-products.ts b/packages/core/core-flows/src/product/workflows/import-products.ts index d9bfc43808..de91b5e34c 100644 --- a/packages/core/core-flows/src/product/workflows/import-products.ts +++ b/packages/core/core-flows/src/product/workflows/import-products.ts @@ -1,5 +1,6 @@ import { WorkflowData, + WorkflowResponse, createWorkflow, transform, } from "@medusajs/workflows-sdk" @@ -17,7 +18,7 @@ export const importProductsWorkflow = createWorkflow( importProductsWorkflowId, ( input: WorkflowData - ): WorkflowData => { + ): WorkflowResponse => { const products = parseProductCsvStep(input.fileContent) const batchRequest = groupProductsForBatchStep(products) @@ -64,7 +65,6 @@ export const importProductsWorkflow = createWorkflow( ] }) sendNotificationsStep(notifications) - - return summary + return new WorkflowResponse(summary) } ) 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 834ebf4d5c..3a87c07299 100644 --- a/packages/core/core-flows/src/product/workflows/update-collections.ts +++ b/packages/core/core-flows/src/product/workflows/update-collections.ts @@ -1,5 +1,9 @@ import { ProductTypes } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateCollectionsStep } from "../steps" type UpdateCollectionsStepInput = { @@ -14,7 +18,7 @@ export const updateCollectionsWorkflow = createWorkflow( updateCollectionsWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return updateCollectionsStep(input) + ): WorkflowResponse => { + return new WorkflowResponse(updateCollectionsStep(input)) } ) diff --git a/packages/core/core-flows/src/product/workflows/update-product-options.ts b/packages/core/core-flows/src/product/workflows/update-product-options.ts index 44ff028e6e..4b31b83520 100644 --- a/packages/core/core-flows/src/product/workflows/update-product-options.ts +++ b/packages/core/core-flows/src/product/workflows/update-product-options.ts @@ -1,5 +1,9 @@ import { ProductTypes } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateProductOptionsStep } from "../steps" type UpdateProductOptionsStepInput = { @@ -14,7 +18,7 @@ export const updateProductOptionsWorkflow = createWorkflow( updateProductOptionsWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return updateProductOptionsStep(input) + ): WorkflowResponse => { + return new WorkflowResponse(updateProductOptionsStep(input)) } ) diff --git a/packages/core/core-flows/src/product/workflows/update-product-tags.ts b/packages/core/core-flows/src/product/workflows/update-product-tags.ts index 45fbd1ed67..05da7b0c04 100644 --- a/packages/core/core-flows/src/product/workflows/update-product-tags.ts +++ b/packages/core/core-flows/src/product/workflows/update-product-tags.ts @@ -1,5 +1,9 @@ import { ProductTypes } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateProductTagsStep } from "../steps" type UpdateProductTagsStepInput = { @@ -14,7 +18,7 @@ export const updateProductTagsWorkflow = createWorkflow( updateProductTagsWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return updateProductTagsStep(input) + ): WorkflowResponse => { + return new WorkflowResponse(updateProductTagsStep(input)) } ) diff --git a/packages/core/core-flows/src/product/workflows/update-product-types.ts b/packages/core/core-flows/src/product/workflows/update-product-types.ts index 0b790efc5d..8f6e27a351 100644 --- a/packages/core/core-flows/src/product/workflows/update-product-types.ts +++ b/packages/core/core-flows/src/product/workflows/update-product-types.ts @@ -1,5 +1,9 @@ import { ProductTypes } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateProductTypesStep } from "../steps" type UpdateProductTypesStepInput = { @@ -14,7 +18,7 @@ export const updateProductTypesWorkflow = createWorkflow( updateProductTypesWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return updateProductTypesStep(input) + ): WorkflowResponse => { + return new WorkflowResponse(updateProductTypesStep(input)) } ) 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 4e14abfa0c..8fb541dd50 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,6 +1,7 @@ import { PricingTypes, ProductTypes } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, transform, } from "@medusajs/workflows-sdk" @@ -28,7 +29,7 @@ export const updateProductVariantsWorkflow = createWorkflow( updateProductVariantsWorkflowId, ( input: WorkflowData - ): WorkflowData => { + ): WorkflowResponse => { // 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) { @@ -112,7 +113,7 @@ export const updateProductVariantsWorkflow = createWorkflow( const updatedPriceSets = updatePriceSetsStep(pricesToUpdate) // We want to correctly return the variants with their associated price sets and the prices coming from it - return transform( + const response = transform( { variantPriceSetLinks, updatedVariants, @@ -132,5 +133,7 @@ export const updateProductVariantsWorkflow = createWorkflow( }) } ) + + return new WorkflowResponse(response) } ) 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 c5dad99fc6..b360f8a3b7 100644 --- a/packages/core/core-flows/src/product/workflows/update-products.ts +++ b/packages/core/core-flows/src/product/workflows/update-products.ts @@ -10,6 +10,7 @@ import { createWorkflow, transform, WorkflowData, + WorkflowResponse, } from "@medusajs/workflows-sdk" import { createRemoteLinkStep, @@ -211,7 +212,7 @@ export const updateProductsWorkflow = createWorkflow( updateProductsWorkflowId, ( input: WorkflowData - ): WorkflowData => { + ): WorkflowResponse => { const previousVariantIds = getVariantIdsForProductsStep(input) const toUpdateInput = transform({ input }, prepareUpdateProductInput) @@ -250,6 +251,6 @@ export const updateProductsWorkflow = createWorkflow( createRemoteLinkStep(salesChannelLinks) - return updatedProducts + return new WorkflowResponse(updatedProducts) } ) diff --git a/packages/core/core-flows/src/promotion/workflows/batch-promotion-rules.ts b/packages/core/core-flows/src/promotion/workflows/batch-promotion-rules.ts index 1efba53db4..64124a6ec6 100644 --- a/packages/core/core-flows/src/promotion/workflows/batch-promotion-rules.ts +++ b/packages/core/core-flows/src/promotion/workflows/batch-promotion-rules.ts @@ -7,6 +7,7 @@ import { } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, parallelize, transform, @@ -26,7 +27,7 @@ export const batchPromotionRulesWorkflow = createWorkflow( rule_type: RuleType } > - ): WorkflowData> => { + ): WorkflowResponse> => { const createInput = transform({ input }, (data) => ({ rule_type: data.input.rule_type, data: { id: data.input.id, rules: data.input.create ?? [] }, @@ -47,6 +48,8 @@ export const batchPromotionRulesWorkflow = createWorkflow( deletePromotionRulesWorkflowStep(deleteInput) ) - return transform({ created, updated, deleted }, (data) => data) + return new WorkflowResponse( + transform({ created, updated, deleted }, (data) => data) + ) } ) diff --git a/packages/core/core-flows/src/promotion/workflows/create-campaigns.ts b/packages/core/core-flows/src/promotion/workflows/create-campaigns.ts index d364475447..bfcc5e5c8b 100644 --- a/packages/core/core-flows/src/promotion/workflows/create-campaigns.ts +++ b/packages/core/core-flows/src/promotion/workflows/create-campaigns.ts @@ -1,5 +1,9 @@ import { CampaignDTO, CreateCampaignDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createCampaignsStep } from "../steps" type WorkflowInput = { campaignsData: CreateCampaignDTO[] } @@ -7,7 +11,7 @@ type WorkflowInput = { campaignsData: CreateCampaignDTO[] } export const createCampaignsWorkflowId = "create-campaigns" export const createCampaignsWorkflow = createWorkflow( createCampaignsWorkflowId, - (input: WorkflowData): WorkflowData => { - return createCampaignsStep(input.campaignsData) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(createCampaignsStep(input.campaignsData)) } ) diff --git a/packages/core/core-flows/src/promotion/workflows/create-promotion-rules.ts b/packages/core/core-flows/src/promotion/workflows/create-promotion-rules.ts index 80ff835065..fc2bbd7545 100644 --- a/packages/core/core-flows/src/promotion/workflows/create-promotion-rules.ts +++ b/packages/core/core-flows/src/promotion/workflows/create-promotion-rules.ts @@ -1,5 +1,9 @@ import { AddPromotionRulesWorkflowDTO, PromotionRuleDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { addRulesToPromotionsStep } from "../steps" export const createPromotionRulesWorkflowId = "create-promotion-rules-workflow" @@ -7,7 +11,7 @@ export const createPromotionRulesWorkflow = createWorkflow( createPromotionRulesWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return addRulesToPromotionsStep(input) + ): WorkflowResponse => { + return new WorkflowResponse(addRulesToPromotionsStep(input)) } ) diff --git a/packages/core/core-flows/src/promotion/workflows/create-promotions.ts b/packages/core/core-flows/src/promotion/workflows/create-promotions.ts index a19dce1015..240b5d01b6 100644 --- a/packages/core/core-flows/src/promotion/workflows/create-promotions.ts +++ b/packages/core/core-flows/src/promotion/workflows/create-promotions.ts @@ -1,5 +1,9 @@ import { CreatePromotionDTO, PromotionDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createPromotionsStep } from "../steps" type WorkflowInput = { promotionsData: CreatePromotionDTO[] } @@ -7,7 +11,7 @@ type WorkflowInput = { promotionsData: CreatePromotionDTO[] } export const createPromotionsWorkflowId = "create-promotions" export const createPromotionsWorkflow = createWorkflow( createPromotionsWorkflowId, - (input: WorkflowData): WorkflowData => { - return createPromotionsStep(input.promotionsData) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(createPromotionsStep(input.promotionsData)) } ) diff --git a/packages/core/core-flows/src/promotion/workflows/update-campaigns.ts b/packages/core/core-flows/src/promotion/workflows/update-campaigns.ts index dac3086857..7566b6da29 100644 --- a/packages/core/core-flows/src/promotion/workflows/update-campaigns.ts +++ b/packages/core/core-flows/src/promotion/workflows/update-campaigns.ts @@ -1,5 +1,9 @@ import { CampaignDTO, UpdateCampaignDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateCampaignsStep } from "../steps" type WorkflowInput = { campaignsData: UpdateCampaignDTO[] } @@ -7,7 +11,7 @@ type WorkflowInput = { campaignsData: UpdateCampaignDTO[] } export const updateCampaignsWorkflowId = "update-campaigns" export const updateCampaignsWorkflow = createWorkflow( updateCampaignsWorkflowId, - (input: WorkflowData): WorkflowData => { - return updateCampaignsStep(input.campaignsData) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(updateCampaignsStep(input.campaignsData)) } ) diff --git a/packages/core/core-flows/src/promotion/workflows/update-promotion-rules.ts b/packages/core/core-flows/src/promotion/workflows/update-promotion-rules.ts index 1cb790ee58..3aab77cfd9 100644 --- a/packages/core/core-flows/src/promotion/workflows/update-promotion-rules.ts +++ b/packages/core/core-flows/src/promotion/workflows/update-promotion-rules.ts @@ -2,7 +2,11 @@ import { UpdatePromotionRulesWorkflowDTO, PromotionRuleDTO, } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updatePromotionRulesStep } from "../steps" export const updatePromotionRulesWorkflowId = "update-promotion-rules-workflow" @@ -10,7 +14,7 @@ export const updatePromotionRulesWorkflow = createWorkflow( updatePromotionRulesWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return updatePromotionRulesStep(input) + ): WorkflowResponse => { + return new WorkflowResponse(updatePromotionRulesStep(input)) } ) diff --git a/packages/core/core-flows/src/promotion/workflows/update-promotions.ts b/packages/core/core-flows/src/promotion/workflows/update-promotions.ts index dcd44846cb..559b1ea957 100644 --- a/packages/core/core-flows/src/promotion/workflows/update-promotions.ts +++ b/packages/core/core-flows/src/promotion/workflows/update-promotions.ts @@ -1,5 +1,9 @@ import { PromotionDTO, UpdatePromotionDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updatePromotionsStep } from "../steps" type WorkflowInput = { promotionsData: UpdatePromotionDTO[] } @@ -7,7 +11,7 @@ type WorkflowInput = { promotionsData: UpdatePromotionDTO[] } export const updatePromotionsWorkflowId = "update-promotions" export const updatePromotionsWorkflow = createWorkflow( updatePromotionsWorkflowId, - (input: WorkflowData): WorkflowData => { - return updatePromotionsStep(input.promotionsData) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(updatePromotionsStep(input.promotionsData)) } ) diff --git a/packages/core/core-flows/src/region/workflows/create-regions.ts b/packages/core/core-flows/src/region/workflows/create-regions.ts index 48c3b14f71..03dd995d81 100644 --- a/packages/core/core-flows/src/region/workflows/create-regions.ts +++ b/packages/core/core-flows/src/region/workflows/create-regions.ts @@ -4,6 +4,7 @@ import { parallelize, transform, WorkflowData, + WorkflowResponse, } from "@medusajs/workflows-sdk" import { createRegionsStep } from "../steps" import { setRegionsPaymentProvidersStep } from "../steps/set-regions-payment-providers" @@ -14,7 +15,7 @@ export const createRegionsWorkflow = createWorkflow( createRegionsWorkflowId, ( input: WorkflowData - ): WorkflowData => { + ): WorkflowResponse => { const data = transform(input, (data) => { const regionIndexToAdditionalData = data.regions.map((region, index) => { return { @@ -81,6 +82,6 @@ export const createRegionsWorkflow = createWorkflow( }) ) - return regions + return new WorkflowResponse(regions) } ) diff --git a/packages/core/core-flows/src/region/workflows/update-regions.ts b/packages/core/core-flows/src/region/workflows/update-regions.ts index d0f8d58cb7..3323b04140 100644 --- a/packages/core/core-flows/src/region/workflows/update-regions.ts +++ b/packages/core/core-flows/src/region/workflows/update-regions.ts @@ -5,6 +5,7 @@ import { transform, when, WorkflowData, + WorkflowResponse, } from "@medusajs/workflows-sdk" import { updateRegionsStep } from "../steps" import { setRegionsPaymentProvidersStep } from "../steps/set-regions-payment-providers" @@ -15,7 +16,7 @@ export const updateRegionsWorkflow = createWorkflow( updateRegionsWorkflowId, ( input: WorkflowData - ): WorkflowData => { + ): WorkflowResponse => { const normalizedInput = transform(input, (data) => { const { selector, update } = data const { payment_providers = [], is_tax_inclusive, ...rest } = update @@ -72,6 +73,6 @@ export const updateRegionsWorkflow = createWorkflow( input: upsertProvidersNormalizedInput, }) - return regions + return new WorkflowResponse(regions) } ) diff --git a/packages/core/core-flows/src/reservation/workflows/create-reservations.ts b/packages/core/core-flows/src/reservation/workflows/create-reservations.ts index fc24d2cb45..4c1b7a9a05 100644 --- a/packages/core/core-flows/src/reservation/workflows/create-reservations.ts +++ b/packages/core/core-flows/src/reservation/workflows/create-reservations.ts @@ -1,4 +1,8 @@ -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { WorkflowTypes } from "@medusajs/types" import { createReservationsStep } from "../steps" @@ -8,7 +12,7 @@ export const createReservationsWorkflow = createWorkflow( createReservationsWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return createReservationsStep(input.reservations) + ): WorkflowResponse => { + return new WorkflowResponse(createReservationsStep(input.reservations)) } ) diff --git a/packages/core/core-flows/src/reservation/workflows/update-reservations.ts b/packages/core/core-flows/src/reservation/workflows/update-reservations.ts index d066bc1068..6b8a686dda 100644 --- a/packages/core/core-flows/src/reservation/workflows/update-reservations.ts +++ b/packages/core/core-flows/src/reservation/workflows/update-reservations.ts @@ -1,4 +1,8 @@ -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { WorkflowTypes } from "@medusajs/types" import { updateReservationsStep } from "../steps" @@ -8,7 +12,7 @@ export const updateReservationsWorkflow = createWorkflow( updateReservationsWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return updateReservationsStep(input.updates) + ): WorkflowResponse => { + return new WorkflowResponse(updateReservationsStep(input.updates)) } ) diff --git a/packages/core/core-flows/src/return-reason/workflows/create-return-reasons.ts b/packages/core/core-flows/src/return-reason/workflows/create-return-reasons.ts index dea0b291d9..dce02cefac 100644 --- a/packages/core/core-flows/src/return-reason/workflows/create-return-reasons.ts +++ b/packages/core/core-flows/src/return-reason/workflows/create-return-reasons.ts @@ -2,7 +2,11 @@ import { CreateOrderReturnReasonDTO, OrderReturnReasonDTO, } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createReturnReasonsStep } from "../steps" type WorkflowInput = { data: CreateOrderReturnReasonDTO[] } @@ -12,7 +16,7 @@ export const createReturnReasonsWorkflow = createWorkflow( createReturnReasonsWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return createReturnReasonsStep(input.data) + ): WorkflowResponse => { + return new WorkflowResponse(createReturnReasonsStep(input.data)) } ) diff --git a/packages/core/core-flows/src/return-reason/workflows/update-return-reasons.ts b/packages/core/core-flows/src/return-reason/workflows/update-return-reasons.ts index 7c06920232..d902abda70 100644 --- a/packages/core/core-flows/src/return-reason/workflows/update-return-reasons.ts +++ b/packages/core/core-flows/src/return-reason/workflows/update-return-reasons.ts @@ -3,7 +3,11 @@ import { OrderReturnReasonDTO, ReturnReasonUpdatableFields, } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateReturnReasonsStep } from "../steps" type WorkflowInput = { @@ -16,7 +20,7 @@ export const updateReturnReasonsWorkflow = createWorkflow( updateReturnReasonsWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return updateReturnReasonsStep(input) + ): WorkflowResponse => { + return new WorkflowResponse(updateReturnReasonsStep(input)) } ) diff --git a/packages/core/core-flows/src/sales-channel/workflows/create-sales-channels.ts b/packages/core/core-flows/src/sales-channel/workflows/create-sales-channels.ts index 04e2ed834c..b5da3e2b38 100644 --- a/packages/core/core-flows/src/sales-channel/workflows/create-sales-channels.ts +++ b/packages/core/core-flows/src/sales-channel/workflows/create-sales-channels.ts @@ -1,5 +1,9 @@ import { CreateSalesChannelDTO, SalesChannelDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createSalesChannelsStep } from "../steps/create-sales-channels" type WorkflowInput = { salesChannelsData: CreateSalesChannelDTO[] } @@ -7,7 +11,9 @@ type WorkflowInput = { salesChannelsData: CreateSalesChannelDTO[] } export const createSalesChannelsWorkflowId = "create-sales-channels" export const createSalesChannelsWorkflow = createWorkflow( createSalesChannelsWorkflowId, - (input: WorkflowData): WorkflowData => { - return createSalesChannelsStep({ data: input.salesChannelsData }) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse( + createSalesChannelsStep({ data: input.salesChannelsData }) + ) } ) diff --git a/packages/core/core-flows/src/sales-channel/workflows/update-sales-channels.ts b/packages/core/core-flows/src/sales-channel/workflows/update-sales-channels.ts index 9f700ffbae..0ad0117546 100644 --- a/packages/core/core-flows/src/sales-channel/workflows/update-sales-channels.ts +++ b/packages/core/core-flows/src/sales-channel/workflows/update-sales-channels.ts @@ -3,7 +3,11 @@ import { SalesChannelDTO, UpdateSalesChannelDTO, } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateSalesChannelsStep } from "../steps/update-sales-channels" type UpdateSalesChannelsStepInput = { @@ -16,7 +20,7 @@ export const updateSalesChannelsWorkflow = createWorkflow( updateSalesChannelsWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return updateSalesChannelsStep(input) + ): WorkflowResponse => { + return new WorkflowResponse(updateSalesChannelsStep(input)) } ) diff --git a/packages/core/core-flows/src/stock-location/workflows/create-stock-locations.ts b/packages/core/core-flows/src/stock-location/workflows/create-stock-locations.ts index 7bd0206f86..02e131bcd2 100644 --- a/packages/core/core-flows/src/stock-location/workflows/create-stock-locations.ts +++ b/packages/core/core-flows/src/stock-location/workflows/create-stock-locations.ts @@ -1,4 +1,8 @@ -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { CreateStockLocationInput } from "@medusajs/types" import { createStockLocations } from "../steps" @@ -11,8 +15,6 @@ export const createStockLocationsWorkflowId = "create-stock-locations-workflow" export const createStockLocationsWorkflow = createWorkflow( createStockLocationsWorkflowId, (input: WorkflowData) => { - const locations = createStockLocations(input.locations) - - return locations + return new WorkflowResponse(createStockLocations(input.locations)) } ) diff --git a/packages/core/core-flows/src/stock-location/workflows/delete-stock-locations.ts b/packages/core/core-flows/src/stock-location/workflows/delete-stock-locations.ts index 0cf5f9269a..cbab3c9e96 100644 --- a/packages/core/core-flows/src/stock-location/workflows/delete-stock-locations.ts +++ b/packages/core/core-flows/src/stock-location/workflows/delete-stock-locations.ts @@ -12,7 +12,6 @@ export const deleteStockLocationsWorkflow = createWorkflow( deleteStockLocationsWorkflowId, (input: WorkflowData) => { const softDeletedEntities = deleteStockLocationsStep(input.ids) - removeRemoteLinkStep(softDeletedEntities) } ) diff --git a/packages/core/core-flows/src/stock-location/workflows/link-sales-channels-to-stock-location.ts b/packages/core/core-flows/src/stock-location/workflows/link-sales-channels-to-stock-location.ts index d3ef84f5d4..ed61c0f211 100644 --- a/packages/core/core-flows/src/stock-location/workflows/link-sales-channels-to-stock-location.ts +++ b/packages/core/core-flows/src/stock-location/workflows/link-sales-channels-to-stock-location.ts @@ -10,7 +10,7 @@ export const linkSalesChannelsToStockLocationWorkflowId = "link-sales-channels-to-stock-location" export const linkSalesChannelsToStockLocationWorkflow = createWorkflow( linkSalesChannelsToStockLocationWorkflowId, - (input: WorkflowData): WorkflowData => { + (input: WorkflowData): void => { const toAdd = transform({ input }, (data) => { return data.input.add?.map((salesChannelId) => ({ sales_channel_id: salesChannelId, diff --git a/packages/core/core-flows/src/stock-location/workflows/update-stock-locations.ts b/packages/core/core-flows/src/stock-location/workflows/update-stock-locations.ts index 2115d5af68..d83307f5f0 100644 --- a/packages/core/core-flows/src/stock-location/workflows/update-stock-locations.ts +++ b/packages/core/core-flows/src/stock-location/workflows/update-stock-locations.ts @@ -3,7 +3,11 @@ import { UpdateStockLocationInput, FilterableStockLocationProps, } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateStockLocationsStep } from "../steps" @@ -14,7 +18,9 @@ interface WorkflowInput { export const updateStockLocationsWorkflowId = "update-stock-locations-workflow" export const updateStockLocationsWorkflow = createWorkflow( updateStockLocationsWorkflowId, - (input: WorkflowData): WorkflowData => { - return updateStockLocationsStep(input) + ( + input: WorkflowData + ): WorkflowResponse => { + return new WorkflowResponse(updateStockLocationsStep(input)) } ) diff --git a/packages/core/core-flows/src/store/workflows/create-stores.ts b/packages/core/core-flows/src/store/workflows/create-stores.ts index 7408e126a3..747be7b62a 100644 --- a/packages/core/core-flows/src/store/workflows/create-stores.ts +++ b/packages/core/core-flows/src/store/workflows/create-stores.ts @@ -1,6 +1,7 @@ import { StoreDTO, StoreWorkflow } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, transform, } from "@medusajs/workflows-sdk" @@ -12,7 +13,7 @@ type WorkflowInputData = { stores: StoreWorkflow.CreateStoreWorkflowInput[] } export const createStoresWorkflowId = "create-stores" export const createStoresWorkflow = createWorkflow( createStoresWorkflowId, - (input: WorkflowData): WorkflowData => { + (input: WorkflowData): WorkflowResponse => { const normalizedInput = transform({ input }, (data) => { return data.input.stores.map((store) => { return { @@ -49,6 +50,6 @@ export const createStoresWorkflow = createWorkflow( }) updatePricePreferencesAsArrayStep(upsertPricePreferences) - return stores + return new WorkflowResponse(stores) } ) diff --git a/packages/core/core-flows/src/store/workflows/update-stores.ts b/packages/core/core-flows/src/store/workflows/update-stores.ts index 5c307d5be5..deee9746c1 100644 --- a/packages/core/core-flows/src/store/workflows/update-stores.ts +++ b/packages/core/core-flows/src/store/workflows/update-stores.ts @@ -1,6 +1,7 @@ import { StoreDTO, StoreWorkflow } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, transform, when, @@ -13,7 +14,7 @@ type WorkflowInputData = StoreWorkflow.UpdateStoreWorkflowInput export const updateStoresWorkflowId = "update-stores" export const updateStoresWorkflow = createWorkflow( updateStoresWorkflowId, - (input: WorkflowData): WorkflowData => { + (input: WorkflowData): WorkflowResponse => { const normalizedInput = transform({ input }, (data) => { if (!data.input.update.supported_currencies?.length) { return data.input @@ -53,6 +54,6 @@ export const updateStoresWorkflow = createWorkflow( updatePricePreferencesAsArrayStep(upsertPricePreferences) }) - return stores + return new WorkflowResponse(stores) } ) diff --git a/packages/core/core-flows/src/tax/workflows/create-tax-rate-rules.ts b/packages/core/core-flows/src/tax/workflows/create-tax-rate-rules.ts index f6f5bc1f57..406b2e775b 100644 --- a/packages/core/core-flows/src/tax/workflows/create-tax-rate-rules.ts +++ b/packages/core/core-flows/src/tax/workflows/create-tax-rate-rules.ts @@ -1,5 +1,9 @@ import { CreateTaxRateRuleDTO, TaxRateRuleDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createTaxRateRulesStep } from "../steps" type WorkflowInput = { @@ -9,7 +13,7 @@ type WorkflowInput = { export const createTaxRateRulesWorkflowId = "create-tax-rate-rules" export const createTaxRateRulesWorkflow = createWorkflow( createTaxRateRulesWorkflowId, - (input: WorkflowData): WorkflowData => { - return createTaxRateRulesStep(input.rules) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(createTaxRateRulesStep(input.rules)) } ) diff --git a/packages/core/core-flows/src/tax/workflows/create-tax-rates.ts b/packages/core/core-flows/src/tax/workflows/create-tax-rates.ts index 626dcb9eb6..4e859a2712 100644 --- a/packages/core/core-flows/src/tax/workflows/create-tax-rates.ts +++ b/packages/core/core-flows/src/tax/workflows/create-tax-rates.ts @@ -1,5 +1,9 @@ import { CreateTaxRateDTO, TaxRateDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createTaxRatesStep } from "../steps" type WorkflowInput = CreateTaxRateDTO[] @@ -7,7 +11,7 @@ type WorkflowInput = CreateTaxRateDTO[] export const createTaxRatesWorkflowId = "create-tax-rates" export const createTaxRatesWorkflow = createWorkflow( createTaxRatesWorkflowId, - (input: WorkflowData): WorkflowData => { - return createTaxRatesStep(input) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(createTaxRatesStep(input)) } ) diff --git a/packages/core/core-flows/src/tax/workflows/create-tax-regions.ts b/packages/core/core-flows/src/tax/workflows/create-tax-regions.ts index b6445a427e..90309dc44f 100644 --- a/packages/core/core-flows/src/tax/workflows/create-tax-regions.ts +++ b/packages/core/core-flows/src/tax/workflows/create-tax-regions.ts @@ -1,5 +1,9 @@ import { CreateTaxRegionDTO, TaxRegionDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createTaxRegionsStep } from "../steps" type WorkflowInput = CreateTaxRegionDTO[] @@ -7,7 +11,7 @@ type WorkflowInput = CreateTaxRegionDTO[] export const createTaxRegionsWorkflowId = "create-tax-regions" export const createTaxRegionsWorkflow = createWorkflow( createTaxRegionsWorkflowId, - (input: WorkflowData): WorkflowData => { - return createTaxRegionsStep(input) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(createTaxRegionsStep(input)) } ) diff --git a/packages/core/core-flows/src/tax/workflows/delete-tax-rate-rules.ts b/packages/core/core-flows/src/tax/workflows/delete-tax-rate-rules.ts index 64a1a5f58c..8c25d1d1ba 100644 --- a/packages/core/core-flows/src/tax/workflows/delete-tax-rate-rules.ts +++ b/packages/core/core-flows/src/tax/workflows/delete-tax-rate-rules.ts @@ -1,4 +1,8 @@ -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { deleteTaxRateRulesStep } from "../steps" type WorkflowInput = { ids: string[] } @@ -6,7 +10,7 @@ type WorkflowInput = { ids: string[] } export const deleteTaxRateRulesWorkflowId = "delete-tax-rate-rules" export const deleteTaxRateRulesWorkflow = createWorkflow( deleteTaxRateRulesWorkflowId, - (input: WorkflowData): WorkflowData => { - return deleteTaxRateRulesStep(input.ids) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(deleteTaxRateRulesStep(input.ids)) } ) diff --git a/packages/core/core-flows/src/tax/workflows/delete-tax-rates.ts b/packages/core/core-flows/src/tax/workflows/delete-tax-rates.ts index aad20cd28a..f91455f511 100644 --- a/packages/core/core-flows/src/tax/workflows/delete-tax-rates.ts +++ b/packages/core/core-flows/src/tax/workflows/delete-tax-rates.ts @@ -1,4 +1,8 @@ -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { deleteTaxRatesStep } from "../steps" type WorkflowInput = { ids: string[] } @@ -6,7 +10,7 @@ type WorkflowInput = { ids: string[] } export const deleteTaxRatesWorkflowId = "delete-tax-rates" export const deleteTaxRatesWorkflow = createWorkflow( deleteTaxRatesWorkflowId, - (input: WorkflowData): WorkflowData => { - return deleteTaxRatesStep(input.ids) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(deleteTaxRatesStep(input.ids)) } ) diff --git a/packages/core/core-flows/src/tax/workflows/delete-tax-regions.ts b/packages/core/core-flows/src/tax/workflows/delete-tax-regions.ts index e144799446..7c98eb8e6c 100644 --- a/packages/core/core-flows/src/tax/workflows/delete-tax-regions.ts +++ b/packages/core/core-flows/src/tax/workflows/delete-tax-regions.ts @@ -1,4 +1,8 @@ -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { deleteTaxRegionsStep } from "../steps" type WorkflowInput = { ids: string[] } @@ -6,7 +10,7 @@ type WorkflowInput = { ids: string[] } export const deleteTaxRegionsWorkflowId = "delete-tax-regions" export const deleteTaxRegionsWorkflow = createWorkflow( deleteTaxRegionsWorkflowId, - (input: WorkflowData): WorkflowData => { - return deleteTaxRegionsStep(input.ids) + (input: WorkflowData): WorkflowResponse => { + return new WorkflowResponse(deleteTaxRegionsStep(input.ids)) } ) diff --git a/packages/core/core-flows/src/tax/workflows/set-tax-rate-rules.ts b/packages/core/core-flows/src/tax/workflows/set-tax-rate-rules.ts index d31e6da345..f5c98ea11b 100644 --- a/packages/core/core-flows/src/tax/workflows/set-tax-rate-rules.ts +++ b/packages/core/core-flows/src/tax/workflows/set-tax-rate-rules.ts @@ -1,6 +1,7 @@ import { CreateTaxRateRuleDTO, TaxRateRuleDTO } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, transform, } from "@medusajs/workflows-sdk" @@ -18,7 +19,7 @@ type WorkflowInput = { export const setTaxRateRulesWorkflowId = "set-tax-rate-rules" export const setTaxRateRulesWorkflow = createWorkflow( setTaxRateRulesWorkflowId, - (input: WorkflowData): WorkflowData => { + (input: WorkflowData): WorkflowResponse => { const ruleIds = listTaxRateRuleIdsStep({ selector: { tax_rate_id: input.tax_rate_ids }, }) @@ -41,6 +42,6 @@ export const setTaxRateRulesWorkflow = createWorkflow( } ) - return createTaxRateRulesStep(rulesWithRateId) + return new WorkflowResponse(createTaxRateRulesStep(rulesWithRateId)) } ) diff --git a/packages/core/core-flows/src/tax/workflows/update-tax-rates.ts b/packages/core/core-flows/src/tax/workflows/update-tax-rates.ts index 12471f0480..c2dbbed21d 100644 --- a/packages/core/core-flows/src/tax/workflows/update-tax-rates.ts +++ b/packages/core/core-flows/src/tax/workflows/update-tax-rates.ts @@ -8,6 +8,7 @@ import { ModuleRegistrationName } from "@medusajs/utils" import { StepResponse, WorkflowData, + WorkflowResponse, createStep, createWorkflow, transform, @@ -89,7 +90,7 @@ const maybeListTaxRateRuleIdsStep = createStep( export const updateTaxRatesWorkflowId = "update-tax-rates" export const updateTaxRatesWorkflow = createWorkflow( updateTaxRatesWorkflowId, - (input: WorkflowData): WorkflowData => { + (input: WorkflowData): WorkflowResponse => { const cleanedUpdateInput = transform(input, (data) => { // Transform clones data so we can safely modify it if (data.update.rules) { @@ -145,6 +146,6 @@ export const updateTaxRatesWorkflow = createWorkflow( createTaxRateRulesStep(rulesWithRateId) // end of COPY-PASTE from set-tax-rate-rules.ts - return updatedRates + return new WorkflowResponse(updatedRates) } ) diff --git a/packages/core/core-flows/src/user/workflows/create-user-account.ts b/packages/core/core-flows/src/user/workflows/create-user-account.ts index 92eac55e47..d0de01caa6 100644 --- a/packages/core/core-flows/src/user/workflows/create-user-account.ts +++ b/packages/core/core-flows/src/user/workflows/create-user-account.ts @@ -1,6 +1,7 @@ import { CreateUserDTO, UserDTO } from "@medusajs/types" import { WorkflowData, + WorkflowResponse, createWorkflow, transform, } from "@medusajs/workflows-sdk" @@ -15,7 +16,7 @@ type WorkflowInput = { export const createUserAccountWorkflowId = "create-user-account" export const createUserAccountWorkflow = createWorkflow( createUserAccountWorkflowId, - (input: WorkflowData): WorkflowData => { + (input: WorkflowData): WorkflowResponse => { const users = createUsersStep([input.userData]) const user = transform(users, (users: UserDTO[]) => users[0]) @@ -24,6 +25,6 @@ export const createUserAccountWorkflow = createWorkflow( actorType: "user", value: user.id, }) - return user + return new WorkflowResponse(user) } ) diff --git a/packages/core/core-flows/src/user/workflows/create-users.ts b/packages/core/core-flows/src/user/workflows/create-users.ts index ec4187a683..4fc3744fcf 100644 --- a/packages/core/core-flows/src/user/workflows/create-users.ts +++ b/packages/core/core-flows/src/user/workflows/create-users.ts @@ -1,5 +1,9 @@ import { CreateUserDTO, UserDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { createUsersStep } from "../steps" import { UserWorkflow } from "@medusajs/types" @@ -8,7 +12,7 @@ export const createUsersWorkflow = createWorkflow( createUsersWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return createUsersStep(input.users) + ): WorkflowResponse => { + return new WorkflowResponse(createUsersStep(input.users)) } ) diff --git a/packages/core/core-flows/src/user/workflows/update-users.ts b/packages/core/core-flows/src/user/workflows/update-users.ts index d441bf2072..b78051d798 100644 --- a/packages/core/core-flows/src/user/workflows/update-users.ts +++ b/packages/core/core-flows/src/user/workflows/update-users.ts @@ -1,5 +1,9 @@ import { UserDTO } from "@medusajs/types" -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createWorkflow, +} from "@medusajs/workflows-sdk" import { updateUsersStep } from "../steps" import { UserWorkflow } from "@medusajs/types" @@ -8,7 +12,7 @@ export const updateUsersWorkflow = createWorkflow( updateUsersWorkflowId, ( input: WorkflowData - ): WorkflowData => { - return updateUsersStep(input.updates) + ): WorkflowResponse => { + return new WorkflowResponse(updateUsersStep(input.updates)) } ) diff --git a/packages/core/utils/src/orchestration/symbol.ts b/packages/core/utils/src/orchestration/symbol.ts index bbb589522d..db10afb713 100644 --- a/packages/core/utils/src/orchestration/symbol.ts +++ b/packages/core/utils/src/orchestration/symbol.ts @@ -19,3 +19,6 @@ export const SymbolWorkflowStepBind = Symbol.for("WorkflowStepBind").toString() export const SymbolWorkflowStepTransformer = Symbol.for( "WorkflowStepTransformer" ).toString() +export const SymbolMedusaWorkflowResponse = Symbol.for( + "MedusaWorkflowResponse" +).toString() diff --git a/packages/core/workflows-sdk/package.json b/packages/core/workflows-sdk/package.json index 4f35708992..a88d1db9e6 100644 --- a/packages/core/workflows-sdk/package.json +++ b/packages/core/workflows-sdk/package.json @@ -39,6 +39,6 @@ "build": "rimraf dist && tsc --build", "watch": "tsc --build --watch", "test": "jest --runInBand --bail --forceExit", - "test:run": "../../../node_modules/.bin/ts-node ./src/utils/_playground.ts" + "test:run": "node ./dist/utils/_playground.js" } } diff --git a/packages/core/workflows-sdk/src/utils/_playground.ts b/packages/core/workflows-sdk/src/utils/_playground.ts index 3929deede5..9f96a3e160 100644 --- a/packages/core/workflows-sdk/src/utils/_playground.ts +++ b/packages/core/workflows-sdk/src/utils/_playground.ts @@ -2,10 +2,10 @@ import { createStep, createWorkflow, StepResponse, - transform, - when, WorkflowData, } from "./composer" +import { createHook } from "./composer/create-hook" +import { WorkflowResponse } from "./composer/helpers/workflow-response" const step1 = createStep("step1", async (input: {}, context) => { return new StepResponse({ step1: "step1" }) @@ -24,12 +24,21 @@ const workflow = createWorkflow( "sub-workflow", function (input: WorkflowData<{ outsideWorkflowData: string }>) { step1() + const somethingHook = createHook("something", { id: "1" }) step3() - return step2({ filters: { id: input.outsideWorkflowData } }) + return new WorkflowResponse({ id: 1 }, { hooks: [somethingHook] }) } ) -const workflow2 = createWorkflow("workflow", function () { +workflow.hooks.something((input) => { + console.log("input>", input) +}) + +workflow.run().then((res) => { + console.log("res", res) +}) + +/*const workflow2 = createWorkflow("workflow", function () { const step1Res = step1() const step3Res = when({ value: true }, ({ value }) => { @@ -45,13 +54,13 @@ const workflow2 = createWorkflow("workflow", function () { const workflowRes = workflow.asStep({ outsideWorkflowData: step1Res.step1 }) return workflowRes -}) +})*/ -workflow2() - .run({}) - .then((res) => { - console.log(res.result) - }) +// workflow() +// .run({}) +// .then((res) => { +// console.log(res.result) +// }) /*const step1 = createStep("step1", async (input: {}, context) => { return new StepResponse({ step1: ["step1"] }) diff --git a/packages/core/workflows-sdk/src/utils/composer/__tests__/compose.ts b/packages/core/workflows-sdk/src/utils/composer/__tests__/compose.ts index f876c218d4..ae271f26e1 100644 --- a/packages/core/workflows-sdk/src/utils/composer/__tests__/compose.ts +++ b/packages/core/workflows-sdk/src/utils/composer/__tests__/compose.ts @@ -1,4 +1,9 @@ -import { WorkflowManager, WorkflowScheduler } from "@medusajs/orchestration" +import { + IDistributedSchedulerStorage, + SchedulerOptions, + WorkflowManager, + WorkflowScheduler, +} from "@medusajs/orchestration" import { ModuleRegistrationName, composeMessage, @@ -8,14 +13,14 @@ import { import { asValue } from "awilix" import { StepResponse, + WorkflowResponse, createStep, createWorkflow, - hook, parallelize, transform, } from ".." import { MedusaWorkflow } from "../../../medusa-workflow" -import { IDistributedSchedulerStorage, SchedulerOptions } from "../../dist" +import { createHook } from "../create-hook" jest.setTimeout(30000) @@ -109,7 +114,7 @@ describe("Workflow composer", function () { const step1 = createStep({ name: "step1", maxRetries }, mockStep1Fn) const workflow = createWorkflow("workflow1", function (input) { - return step1(input) + return new WorkflowResponse(step1(input)) }) const workflowInput = { test: "payload1" } @@ -154,7 +159,7 @@ describe("Workflow composer", function () { const workflow = createWorkflow("workflow1", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2 }) + return new WorkflowResponse(step3({ one: returnStep1, two: ret2 })) }) const workflowInput = { test: "payload1" } @@ -239,13 +244,13 @@ describe("Workflow composer", function () { const workflow = createWorkflow("workflow1", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2 }) + return new WorkflowResponse(step3({ one: returnStep1, two: ret2 })) }) const workflow2 = createWorkflow("workflow2", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2 }) + return new WorkflowResponse(step3({ one: returnStep1, two: ret2 })) }) const workflowInput = { test: "payload1" } @@ -348,13 +353,13 @@ describe("Workflow composer", function () { createWorkflow("workflow1", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2 }) + return new WorkflowResponse(step3({ one: returnStep1, two: ret2 })) }), createWorkflow("workflow2", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2 }) + return new WorkflowResponse(step3({ one: returnStep1, two: ret2 })) }), ]) @@ -458,13 +463,13 @@ describe("Workflow composer", function () { createWorkflow("workflow1", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2 }) + return new WorkflowResponse(step3({ one: returnStep1, two: ret2 })) }), createWorkflow("workflow2", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2 }) + return new WorkflowResponse(step3({ one: returnStep1, two: ret2 })) }), ]) @@ -573,7 +578,7 @@ describe("Workflow composer", function () { const workflow = createWorkflow("workflow1", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2 }) + return new WorkflowResponse(step3({ one: returnStep1, two: ret2 })) }) const workflowInput = { test: "payload1" } @@ -675,7 +680,7 @@ describe("Workflow composer", function () { const workflow = createWorkflow("workflow1", function (input) { const returnStep1 = step1(input) const [ret2, ret3] = parallelize(step2(returnStep1), step3(returnStep1)) - return step4({ one: ret2, two: ret3 }) + return new WorkflowResponse(step4({ one: ret2, two: ret3 })) }) const workflowInput = { test: "payload1" } @@ -803,7 +808,7 @@ describe("Workflow composer", function () { const avg = transform({ obj: ret2 }, transform3Fn) - return step3(avg) + return new WorkflowResponse(step3(avg)) }) const workflowInput = { a: 1, b: 2 } @@ -878,9 +883,7 @@ describe("Workflow composer", function () { expect(mockStep3Fn.mock.calls[0][0]).toEqual({ variant: "variant_2" }) }) - it("should compose a new workflow exposing hooks and log warns if multiple handlers are registered for the same hook", async () => { - const warn = jest.spyOn(console, "warn").mockImplementation(() => {}) - + it("should throw error when multiple handlers are defined for a single hook", async () => { const mockStep1Fn = jest.fn().mockImplementation(({ input }) => { return { id: input, product: "product_1", variant: "variant_2" } }) @@ -896,64 +899,29 @@ describe("Workflow composer", function () { const workflow = createWorkflow("workflow1", function (input) { const data = getData({ input }) - const hookReturn = hook("changeProduct", { + const hookReturn = createHook("changeProduct", { opinionatedPropertyName: data, }) - const transformedData = transform( - { data, hookReturn }, - ({ data, hookReturn }: { data: any; hookReturn: any }) => { - return { - ...data, - ...hookReturn, - } - } - ) - return saveProduct({ product: transformedData }) + return new WorkflowResponse(saveProduct({ product: data }), { + hooks: [hookReturn], + }) }) - workflow.changeProduct(({ opinionatedPropertyName }) => { - return { - newProperties: "new properties", - prod: opinionatedPropertyName.product + "**", - var: opinionatedPropertyName.variant + "**", - other: [1, 2, 3], - nested: { - a: { - b: "c", - }, - }, - moreProperties: "more properties", - } - }) - - workflow.changeProduct((theReturnOfThePreviousHook) => { - return { - ...theReturnOfThePreviousHook, - moreProperties: "2nd hook update", - } - }) + workflow.hooks.changeProduct(() => {}) + expect(() => workflow.hooks.changeProduct(() => {})).toThrow( + "Cannot define multiple hook handlers for the changeProduct hook" + ) const workflowInput = "id_123" const { result: final } = await workflow().run({ input: workflowInput, }) - expect(warn).toHaveBeenCalledTimes(1) expect(final).toEqual({ id: "id_123", - prod: "product_1**", - var: "variant_2**", variant: "variant_2", product: "Saved product - product_1", - newProperties: "new properties", - other: [1, 2, 3], - nested: { - a: { - b: "c", - }, - }, - moreProperties: "more properties", }) }) }) @@ -976,7 +944,7 @@ describe("Workflow composer", function () { const step1 = createStep({ name: "step1", maxRetries }, mockStep1Fn) const workflow = createWorkflow("workflow1", function (input) { - return step1(input) + return new WorkflowResponse(step1(input)) }) const workflowInput = { test: "payload1" } @@ -1005,7 +973,7 @@ describe("Workflow composer", function () { const step1 = createStep({ name: "step1", maxRetries }, mockStep1Fn) const workflow = createWorkflow("workflow1", function (input) { - return step1(input) + return new WorkflowResponse(step1(input)) }) const workflowInput = { test: "payload1" } @@ -1054,7 +1022,7 @@ describe("Workflow composer", function () { const workflow = createWorkflow("workflow1", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2 }) + return new WorkflowResponse(step3({ one: returnStep1, two: ret2 })) }) const workflowInput = { test: "payload1" } @@ -1140,7 +1108,9 @@ describe("Workflow composer", function () { const workflow = createWorkflow("workflow1", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2, input }) + return new WorkflowResponse( + step3({ one: returnStep1, two: ret2, input }) + ) }) const { result: workflowResult, transaction } = await workflow().run({ @@ -1215,13 +1185,13 @@ describe("Workflow composer", function () { const workflow = createWorkflow("workflow1", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2 }) + return new WorkflowResponse(step3({ one: returnStep1, two: ret2 })) }) const workflow2 = createWorkflow("workflow2", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2 }) + return new WorkflowResponse(step3({ one: returnStep1, two: ret2 })) }) const workflowInput = { test: "payload1" } @@ -1324,13 +1294,13 @@ describe("Workflow composer", function () { createWorkflow("workflow1", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2 }) + return new WorkflowResponse(step3({ one: returnStep1, two: ret2 })) }), createWorkflow("workflow2", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2 }) + return new WorkflowResponse(step3({ one: returnStep1, two: ret2 })) }), ]) @@ -1434,13 +1404,13 @@ describe("Workflow composer", function () { createWorkflow("workflow1", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2 }) + return new WorkflowResponse(step3({ one: returnStep1, two: ret2 })) }), createWorkflow("workflow2", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2 }) + return new WorkflowResponse(step3({ one: returnStep1, two: ret2 })) }), ]) @@ -1549,7 +1519,7 @@ describe("Workflow composer", function () { const workflow = createWorkflow("workflow1", function (input) { const returnStep1 = step1(input) const ret2 = step2(returnStep1) - return step3({ one: returnStep1, two: ret2 }) + return new WorkflowResponse(step3({ one: returnStep1, two: ret2 })) }) const workflowInput = { test: "payload1" } @@ -1651,7 +1621,7 @@ describe("Workflow composer", function () { const workflow = createWorkflow("workflow1", function (input) { const returnStep1 = step1(input) const [ret2, ret3] = parallelize(step2(returnStep1), step3(returnStep1)) - return step4({ one: ret2, two: ret3 }) + return new WorkflowResponse(step4({ one: ret2, two: ret3 })) }) const workflowInput = { test: "payload1" } @@ -1779,7 +1749,7 @@ describe("Workflow composer", function () { const avg = transform({ obj: ret2 }, transform3Fn) - return step3(avg) + return new WorkflowResponse(step3(avg)) }) const workflowInput = { a: 1, b: 2 } @@ -1858,9 +1828,7 @@ describe("Workflow composer", function () { expect(mockStep3Fn.mock.calls[0][0]).toEqual({ variant: "variant_2" }) }) - it("should compose a new workflow exposing hooks and log warns if multiple handlers are registered for the same hook", async () => { - const warn = jest.spyOn(console, "warn").mockImplementation(() => {}) - + it("should throw error when multiple handlers for the same hook are defined", async () => { const mockStep1Fn = jest.fn().mockImplementation(({ input }) => { return new StepResponse({ id: input, @@ -1880,64 +1848,29 @@ describe("Workflow composer", function () { const workflow = createWorkflow("workflow1", function (input) { const data = getData({ input }) - const hookReturn = hook("changeProduct", { + const hookReturn = createHook("changeProduct", { opinionatedPropertyName: data, }) - const transformedData = transform( - { data, hookReturn }, - ({ data, hookReturn }: { data: any; hookReturn: any }) => { - return { - ...data, - ...hookReturn, - } - } - ) - return saveProduct({ product: transformedData }) + return new WorkflowResponse(saveProduct({ product: data }), { + hooks: [hookReturn], + }) }) - workflow.changeProduct(({ opinionatedPropertyName }) => { - return { - newProperties: "new properties", - prod: opinionatedPropertyName.product + "**", - var: opinionatedPropertyName.variant + "**", - other: [1, 2, 3], - nested: { - a: { - b: "c", - }, - }, - moreProperties: "more properties", - } - }) - - workflow.changeProduct((theReturnOfThePreviousHook) => { - return { - ...theReturnOfThePreviousHook, - moreProperties: "2nd hook update", - } - }) + workflow.hooks.changeProduct(() => {}) + expect(() => workflow.hooks.changeProduct(() => {})).toThrow( + "Cannot define multiple hook handlers for the changeProduct hook" + ) const workflowInput = "id_123" const { result: final } = await workflow().run({ input: workflowInput, }) - expect(warn).toHaveBeenCalledTimes(1) expect(final).toEqual({ id: "id_123", - prod: "product_1**", - var: "variant_2**", variant: "variant_2", product: "Saved product - product_1", - newProperties: "new properties", - other: [1, 2, 3], - nested: { - a: { - b: "c", - }, - }, - moreProperties: "more properties", }) }) }) @@ -1954,7 +1887,7 @@ describe("Workflow composer", function () { const step1 = createStep("step1", mockStep1Fn, mockCompensateSte1) const workflow = createWorkflow("workflow1", function (input) { - return step1(input) + return new WorkflowResponse(step1(input)) }) const workflowInput = { test: "payload1" } @@ -1998,7 +1931,7 @@ describe("Workflow composer", function () { const workflow = createWorkflow("workflow1", function () { const { property, obj } = step1() - return { someOtherName: property, obj } + return new WorkflowResponse({ someOtherName: property, obj }) }) const { result } = await workflow().run({ @@ -2032,7 +1965,7 @@ describe("Workflow composer", function () { const s1 = step1() const s2 = step2() - return [s1, s2] + return new WorkflowResponse([s1, s2]) }) const { result } = await workflow().run({ @@ -2068,7 +2001,7 @@ describe("Workflow composer", function () { const { obj } = step1() const s2 = step2() - return [{ step1_nested_obj: obj.nested }, s2] + return new WorkflowResponse([{ step1_nested_obj: obj.nested }, s2]) }) const { result } = await workflow().run({ @@ -2097,7 +2030,7 @@ describe("Workflow composer", function () { const step1 = createStep("step1", mockStep1Fn, mockCompensateSte1) const workflow = createWorkflow("workflow1", function (input) { - return step1(input) + return new WorkflowResponse(step1(input)) }) const workflowInput = { test: "payload1" } @@ -2146,7 +2079,7 @@ describe("Workflow composer", function () { const { obj } = step1() const s2 = step2() - return [{ step1_nested_obj: obj.nested }, s2] + return new WorkflowResponse([{ step1_nested_obj: obj.nested }, s2]) }) expect(() => @@ -2155,7 +2088,7 @@ describe("Workflow composer", function () { const s2 = step2() step3() - return [{ step1_nested_obj: obj.nested }, s2] + return new WorkflowResponse([{ step1_nested_obj: obj.nested }, s2]) }) ).toThrowError( `Workflow with id "workflow1" and step definition already exists.` @@ -2165,7 +2098,7 @@ describe("Workflow composer", function () { const { obj } = step1() const s2 = step2() - return [{ step1_nested_obj: obj.nested }, s2] + return new WorkflowResponse([{ step1_nested_obj: obj.nested }, s2]) }) }) @@ -2270,7 +2203,7 @@ describe("Workflow composer", function () { const workflow = createWorkflow("workflow1", function (input) { step1(input) - step2() + step2(input) }) await workflow(container).run({ diff --git a/packages/core/workflows-sdk/src/utils/composer/create-hook.ts b/packages/core/workflows-sdk/src/utils/composer/create-hook.ts new file mode 100644 index 0000000000..7c45a42315 --- /dev/null +++ b/packages/core/workflows-sdk/src/utils/composer/create-hook.ts @@ -0,0 +1,74 @@ +import { CompensateFn, createStep, InvokeFn } from "./create-step" +import { OrchestrationUtils } from "@medusajs/utils" +import { CreateWorkflowComposerContext } from "./type" +import { createStepHandler } from "./helpers/create-step-handler" + +/** + * Representation of a hook definition. + */ +export type Hook = { + __type: typeof OrchestrationUtils.SymbolWorkflowHook + name: Name + /** + * By prefixing a key with a space, we remove it from the + * intellisense of TypeScript. This is needed because + * input is not set at runtime. It is a type-only + * property to infer input data type of a hook + */ + " input": Input +} + +/** + * Define a workflow hook to be executed within steps. The created hook + * is exposed publicly for the workflow consumers to inject and run + * custom logic. + * + * Hooks behaves like steps + */ +export function createHook( + name: Name, + input: TInvokeInput +): Hook { + const context = global[ + OrchestrationUtils.SymbolMedusaWorkflowComposerContext + ] as CreateWorkflowComposerContext + + context.hookBinder(name, function (this: CreateWorkflowComposerContext) { + /** + * We start by registering a new step within the workflow. This will be a noop + * step that can be replaced (optionally) by the workflow consumer. + */ + createStep( + name, + (_: TInvokeInput) => void 0, + () => void 0 + )(input) + + function hook< + TInvokeResultCompensateInput + >(this: CreateWorkflowComposerContext, invokeFn: InvokeFn, compensateFn?: CompensateFn) { + const handlers = createStepHandler.bind(this)({ + stepName: name, + input, + invokeFn, + compensateFn, + }) + + if (this.hooks_.registered.includes(name)) { + throw new Error( + `Cannot define multiple hook handlers for the ${name} hook` + ) + } + + this.hooks_.registered.push(name) + this.handlers.set(name, handlers) + } + + return hook + }) + + return { + __type: OrchestrationUtils.SymbolWorkflowHook, + name, + } as Hook +} diff --git a/packages/core/workflows-sdk/src/utils/composer/create-step.ts b/packages/core/workflows-sdk/src/utils/composer/create-step.ts index 81686f8d5b..d91d408413 100644 --- a/packages/core/workflows-sdk/src/utils/composer/create-step.ts +++ b/packages/core/workflows-sdk/src/utils/composer/create-step.ts @@ -4,7 +4,7 @@ import { WorkflowStepHandler, WorkflowStepHandlerArguments, } from "@medusajs/orchestration" -import { OrchestrationUtils, deepCopy, isString } from "@medusajs/utils" +import { OrchestrationUtils, isString } from "@medusajs/utils" import { ulid } from "ulid" import { StepResponse, resolveValue } from "./helpers" import { proxify } from "./helpers/proxy" @@ -15,6 +15,7 @@ import { StepFunctionResult, WorkflowData, } from "./type" +import { createStepHandler } from "./helpers/create-step-handler" /** * The type of invocation function passed to a step. @@ -25,7 +26,7 @@ import { * * @returns The expected output based on the type parameter `TOutput`. */ -type InvokeFn = ( +export type InvokeFn = ( /** * The input of the step. */ @@ -53,7 +54,7 @@ type InvokeFn = ( * * @returns There's no expected type to be returned by the compensation function. */ -type CompensateFn = ( +export type CompensateFn = ( /** * The argument passed to the compensation function. */ @@ -64,7 +65,7 @@ type CompensateFn = ( context: StepExecutionContext ) => unknown | Promise -interface ApplyStepOptions< +export interface ApplyStepOptions< TStepInputs extends { [K in keyof TInvokeInput]: WorkflowData }, @@ -95,7 +96,7 @@ interface ApplyStepOptions< * @param invokeFn * @param compensateFn */ -function applyStep< +export function applyStep< TInvokeInput, TStepInput extends { [K in keyof TInvokeInput]: WorkflowData @@ -121,77 +122,12 @@ function applyStep< ) } - const handler = { - invoke: async (stepArguments: WorkflowStepHandlerArguments) => { - const metadata = stepArguments.metadata - const idempotencyKey = metadata.idempotency_key - - stepArguments.context!.idempotencyKey = idempotencyKey - const executionContext: StepExecutionContext = { - workflowId: metadata.model_id, - stepName: metadata.action, - action: "invoke", - idempotencyKey, - attempt: metadata.attempt, - container: stepArguments.container, - metadata, - eventGroupId: - stepArguments.transaction.getFlow()?.metadata?.eventGroupId ?? - stepArguments.context!.eventGroupId, - transactionId: stepArguments.context!.transactionId, - context: stepArguments.context!, - } - - const argInput = input ? await resolveValue(input, stepArguments) : {} - const stepResponse: StepResponse = await invokeFn.apply( - this, - [argInput, executionContext] - ) - - const stepResponseJSON = - stepResponse?.__type === OrchestrationUtils.SymbolWorkflowStepResponse - ? stepResponse.toJSON() - : stepResponse - - return { - __type: OrchestrationUtils.SymbolWorkflowWorkflowData, - output: stepResponseJSON, - } - }, - compensate: compensateFn - ? async (stepArguments: WorkflowStepHandlerArguments) => { - const metadata = stepArguments.metadata - const idempotencyKey = metadata.idempotency_key - - stepArguments.context!.idempotencyKey = idempotencyKey - - const executionContext: StepExecutionContext = { - workflowId: metadata.model_id, - stepName: metadata.action, - action: "compensate", - idempotencyKey, - attempt: metadata.attempt, - container: stepArguments.container, - metadata, - context: stepArguments.context!, - } - - const stepOutput = (stepArguments.invoke[stepName] as any)?.output - const invokeResult = - stepOutput?.__type === - OrchestrationUtils.SymbolWorkflowStepResponse - ? stepOutput.compensateInput && - deepCopy(stepOutput.compensateInput) - : stepOutput && deepCopy(stepOutput) - - const args = [invokeResult, executionContext] - const output = await compensateFn.apply(this, args) - return { - output, - } - } - : undefined, - } + const handler = createStepHandler.bind(this)({ + stepName, + input, + invokeFn, + compensateFn, + }) wrapAsyncHandler(stepConfig, handler) @@ -450,19 +386,17 @@ export function createStep< } | undefined ): WorkflowData { - if (!global[OrchestrationUtils.SymbolMedusaWorkflowComposerContext]) { + const context = global[ + OrchestrationUtils.SymbolMedusaWorkflowComposerContext + ] as CreateWorkflowComposerContext + + if (!context) { throw new Error( "createStep must be used inside a createWorkflow definition" ) } - const stepBinder = ( - global[ - OrchestrationUtils.SymbolMedusaWorkflowComposerContext - ] as CreateWorkflowComposerContext - ).stepBinder - - return stepBinder( + return context.stepBinder( applyStep< TInvokeInput, { [K in keyof TInvokeInput]: WorkflowData }, diff --git a/packages/core/workflows-sdk/src/utils/composer/create-workflow.ts b/packages/core/workflows-sdk/src/utils/composer/create-workflow.ts index 29d6cef2fe..adccb73967 100644 --- a/packages/core/workflows-sdk/src/utils/composer/create-workflow.ts +++ b/packages/core/workflows-sdk/src/utils/composer/create-workflow.ts @@ -14,8 +14,9 @@ import { ReturnWorkflow, StepFunction, WorkflowData, - WorkflowDataProperties, + HookHandler, } from "./type" +import { WorkflowResponse } from "./helpers/workflow-response" global[OrchestrationUtils.SymbolMedusaWorkflowComposerContext] = null @@ -74,11 +75,7 @@ global[OrchestrationUtils.SymbolMedusaWorkflowComposerContext] = null * } */ -export function createWorkflow< - TData, - TResult, - THooks extends Record = Record ->( +export function createWorkflow( /** * The name of the workflow or its configuration. */ @@ -88,15 +85,9 @@ export function createWorkflow< * The function can't be an arrow function or an asynchronus function. It also can't directly manipulate data. * You'll have to use the {@link transform} function if you need to directly manipulate data. */ - composer: (input: WorkflowData) => - | void - | WorkflowData - | { - [K in keyof TResult]: - | WorkflowData - | WorkflowDataProperties - | TResult[K] - } + composer: ( + input: WorkflowData + ) => void | WorkflowResponse ): ReturnWorkflow { const name = isString(nameOrConfig) ? nameOrConfig : nameOrConfig.name const options = isString(nameOrConfig) ? {} : nameOrConfig @@ -110,14 +101,18 @@ export function createWorkflow< } const context: CreateWorkflowComposerContext = { + __type: OrchestrationUtils.SymbolMedusaWorkflowComposerContext, workflowId: name, flow: WorkflowManager.getEmptyTransactionDefinition(), handlers, - hooks_: [], + hooks_: { + declared: [], + registered: [], + }, hooksCallback_: {}, hookBinder: (name, fn) => { - context.hooks_.push(name) - return fn(context) + context.hooks_.declared.push(name) + context.hooksCallback_[name] = fn.bind(context)() }, stepBinder: (fn) => { return fn.bind(context)() @@ -169,28 +164,13 @@ export function createWorkflow< return expandedFlow } - let shouldRegisterHookHandler = true - - for (const hook of context.hooks_) { - mainFlow[hook] = (fn) => { - context.hooksCallback_[hook] ??= [] - - if (!shouldRegisterHookHandler) { - console.warn( - `A hook handler has already been registered for the ${hook} hook. The current handler registration will be skipped.` - ) - return - } - - context.hooksCallback_[hook].push(fn) - shouldRegisterHookHandler = false - } + mainFlow.hooks = {} as Record + for (const hook of context.hooks_.declared) { + mainFlow.hooks[hook] = context.hooksCallback_[hook].bind(context) } mainFlow.getName = () => name - mainFlow.run = mainFlow().run - mainFlow.runAsStep = ({ input, }: { diff --git a/packages/core/workflows-sdk/src/utils/composer/helpers/create-step-handler.ts b/packages/core/workflows-sdk/src/utils/composer/helpers/create-step-handler.ts new file mode 100644 index 0000000000..5f9084b33f --- /dev/null +++ b/packages/core/workflows-sdk/src/utils/composer/helpers/create-step-handler.ts @@ -0,0 +1,105 @@ +import { + CreateWorkflowComposerContext, + StepExecutionContext, + WorkflowData, +} from "../type" +import { WorkflowStepHandlerArguments } from "@medusajs/orchestration" +import { resolveValue } from "./resolve-value" +import { StepResponse } from "./step-response" +import { deepCopy, OrchestrationUtils } from "@medusajs/utils" +import { ApplyStepOptions } from "../create-step" + +export function createStepHandler< + TInvokeInput, + TStepInput extends { + [K in keyof TInvokeInput]: WorkflowData + }, + TInvokeResultOutput, + TInvokeResultCompensateInput +>( + this: CreateWorkflowComposerContext, + { + stepName, + input, + invokeFn, + compensateFn, + }: ApplyStepOptions< + TStepInput, + TInvokeInput, + TInvokeResultOutput, + TInvokeResultCompensateInput + > +) { + const handler = { + invoke: async (stepArguments: WorkflowStepHandlerArguments) => { + const metadata = stepArguments.metadata + const idempotencyKey = metadata.idempotency_key + + stepArguments.context!.idempotencyKey = idempotencyKey + const executionContext: StepExecutionContext = { + workflowId: metadata.model_id, + stepName: metadata.action, + action: "invoke", + idempotencyKey, + attempt: metadata.attempt, + container: stepArguments.container, + metadata, + eventGroupId: + stepArguments.transaction.getFlow()?.metadata?.eventGroupId ?? + stepArguments.context!.eventGroupId, + transactionId: stepArguments.context!.transactionId, + context: stepArguments.context!, + } + + const argInput = input ? await resolveValue(input, stepArguments) : {} + const stepResponse: StepResponse = await invokeFn.apply(this, [ + argInput, + executionContext, + ]) + + const stepResponseJSON = + stepResponse?.__type === OrchestrationUtils.SymbolWorkflowStepResponse + ? stepResponse.toJSON() + : stepResponse + + return { + __type: OrchestrationUtils.SymbolWorkflowWorkflowData, + output: stepResponseJSON, + } + }, + compensate: compensateFn + ? async (stepArguments: WorkflowStepHandlerArguments) => { + const metadata = stepArguments.metadata + const idempotencyKey = metadata.idempotency_key + + stepArguments.context!.idempotencyKey = idempotencyKey + + const executionContext: StepExecutionContext = { + workflowId: metadata.model_id, + stepName: metadata.action, + action: "compensate", + idempotencyKey, + attempt: metadata.attempt, + container: stepArguments.container, + metadata, + context: stepArguments.context!, + } + + const stepOutput = (stepArguments.invoke[stepName] as any)?.output + const invokeResult = + stepOutput?.__type === OrchestrationUtils.SymbolWorkflowStepResponse + ? stepOutput.compensateInput && + deepCopy(stepOutput.compensateInput) + : stepOutput && deepCopy(stepOutput) + + const args = [invokeResult, executionContext] + const output = await compensateFn.apply(this, args) + return { + output, + } + } + : undefined, + } + + return handler +} diff --git a/packages/core/workflows-sdk/src/utils/composer/helpers/resolve-value.ts b/packages/core/workflows-sdk/src/utils/composer/helpers/resolve-value.ts index 599713a6fd..b2ad94c967 100644 --- a/packages/core/workflows-sdk/src/utils/composer/helpers/resolve-value.ts +++ b/packages/core/workflows-sdk/src/utils/composer/helpers/resolve-value.ts @@ -5,12 +5,14 @@ async function resolveProperty(property, transactionContext) { if (property?.__type === OrchestrationUtils.SymbolInputReference) { return transactionContext.payload + } else if ( + property?.__type === OrchestrationUtils.SymbolMedusaWorkflowResponse + ) { + return resolveValue(property.$result, transactionContext) } else if ( property?.__type === OrchestrationUtils.SymbolWorkflowStepTransformer ) { return await property.__resolver(transactionContext) - } else if (property?.__type === OrchestrationUtils.SymbolWorkflowHook) { - return await property.__value(transactionContext) } else if (property?.__type === OrchestrationUtils.SymbolWorkflowStep) { const output = invokeRes[property.__step__]?.output ?? invokeRes[property.__step__] diff --git a/packages/core/workflows-sdk/src/utils/composer/helpers/workflow-response.ts b/packages/core/workflows-sdk/src/utils/composer/helpers/workflow-response.ts new file mode 100644 index 0000000000..bf50b8a8a9 --- /dev/null +++ b/packages/core/workflows-sdk/src/utils/composer/helpers/workflow-response.ts @@ -0,0 +1,22 @@ +import { OrchestrationUtils } from "@medusajs/utils" +import { WorkflowData, WorkflowDataProperties } from "../type" + +/** + * Workflow response class encapsulates the return value of a workflow + */ +export class WorkflowResponse { + __type: typeof OrchestrationUtils.SymbolMedusaWorkflowResponse = + OrchestrationUtils.SymbolMedusaWorkflowResponse + + constructor( + public $result: + | WorkflowData + | { + [K in keyof TResult]: + | WorkflowData + | WorkflowDataProperties + | TResult[K] + }, + public options?: { hooks: THooks } + ) {} +} diff --git a/packages/core/workflows-sdk/src/utils/composer/hook.ts b/packages/core/workflows-sdk/src/utils/composer/hook.ts deleted file mode 100644 index e6ac6f0691..0000000000 --- a/packages/core/workflows-sdk/src/utils/composer/hook.ts +++ /dev/null @@ -1,146 +0,0 @@ -import {WorkflowStepHandlerArguments} from "@medusajs/orchestration" -import {deepCopy, OrchestrationUtils} from "@medusajs/utils" -import {resolveValue} from "./helpers" -import { - CreateWorkflowComposerContext, - StepExecutionContext, - WorkflowData, -} from "./type" - -/** - * - * @ignore - * - * This function allows you to add hooks in your workflow that provide access to some data. Then, consumers of that workflow can add a handler function that performs - * an action with the provided data or modify it. - * - * For example, in a "create product" workflow, you may add a hook after the product is created, providing access to the created product. - * Then, developers using that workflow can hook into that point to access the product, modify its attributes, then return the updated product. - * - * @typeParam TOutput - The expected output of the hook's handler function. - * @returns The output of handler functions of this hook. If there are no handler functions, the output is `undefined`. - * - * @example - * import { - * createWorkflow, - * StepExecutionContext, - * hook, - * transform - * } from "@medusajs/workflows-sdk" - * import { - * createProductStep, - * getProductStep, - * createPricesStep - * } from "./steps" - * import { - * MedusaRequest, - * MedusaResponse, - * Product, ProductService - * } from "@medusajs/medusa" - * - * interface WorkflowInput { - * title: string - * } - * - * const myWorkflow = createWorkflow< - * WorkflowInput, - * Product - * >("my-workflow", - * function (input) { - * const product = createProductStep(input) - * - * const hookProduct = hook("createdProductHook", product) - * - * const newProduct = transform({ - * product, - * hookProduct - * }, (input) => { - * return input.hookProduct || input.product - * }) - * - * const prices = createPricesStep(newProduct) - * - * return getProductStep(product.id) - * } - * ) - * - * myWorkflow.createdProductHook( - * async (product, context: StepExecutionContext) => { - * const productService: ProductService = context.container.resolve("productService") - * - * const updatedProduct = await productService.updateProducts(product.id, { - * description: "a cool shirt" - * }) - * - * return updatedProduct - * }) - * - * export async function POST( - * req: MedusaRequest, - * res: MedusaResponse - * ) { - * const { result: product } = await myWorkflow(req.scope) - * .run({ - * input: { - * title: req.body.title - * } - * }) - * - * res.json({ - * product - * }) - * } - */ -export function hook( - /** - * The name of the hook. This will be used by the consumer to add a handler method for the hook. - */ - name: string, - /** - * The data that a handler function receives as a parameter. - */ - value: any -): WorkflowData { - const hookBinder = ( - global[ - OrchestrationUtils.SymbolMedusaWorkflowComposerContext - ] as CreateWorkflowComposerContext - ).hookBinder - - return hookBinder(name, function (context) { - return { - __value: async function ( - transactionContext: WorkflowStepHandlerArguments - ) { - const metadata = transactionContext.metadata - const idempotencyKey = metadata.idempotency_key - - transactionContext.context!.idempotencyKey = idempotencyKey - - const executionContext: StepExecutionContext = { - workflowId: metadata.model_id, - stepName: metadata.action, - action: metadata.action_type, - idempotencyKey, - attempt: metadata.attempt, - container: transactionContext.container, - metadata, - context: transactionContext.context!, - } - - const allValues = await resolveValue(value, transactionContext) - const stepValue = allValues ? deepCopy(allValues) : allValues - - let finalResult - const functions = context.hooksCallback_[name] - for (let i = 0; i < functions.length; i++) { - const fn = functions[i] - const arg = i === 0 ? stepValue : finalResult - finalResult = await fn.apply(fn, [arg, executionContext]) - } - return finalResult - }, - __type: OrchestrationUtils.SymbolWorkflowHook, - } - }) -} diff --git a/packages/core/workflows-sdk/src/utils/composer/index.ts b/packages/core/workflows-sdk/src/utils/composer/index.ts index a3fdc29305..d8a22f15f4 100644 --- a/packages/core/workflows-sdk/src/utils/composer/index.ts +++ b/packages/core/workflows-sdk/src/utils/composer/index.ts @@ -2,7 +2,8 @@ export * from "./create-step" export * from "./create-workflow" export * from "./helpers/resolve-value" export * from "./helpers/step-response" -export * from "./hook" +export * from "./helpers/workflow-response" +export * from "./create-hook" export * from "./parallelize" export * from "./transform" export * from "./type" diff --git a/packages/core/workflows-sdk/src/utils/composer/type.ts b/packages/core/workflows-sdk/src/utils/composer/type.ts index 5aa74473d4..3a231f6954 100644 --- a/packages/core/workflows-sdk/src/utils/composer/type.ts +++ b/packages/core/workflows-sdk/src/utils/composer/type.ts @@ -9,6 +9,7 @@ import { } from "@medusajs/orchestration" import { Context, LoadedModule, MedusaContainer } from "@medusajs/types" import { ExportedWorkflow } from "../../helper" +import { Hook } from "./create-hook" export type StepFunctionResult = (this: CreateWorkflowComposerContext) => WorkflowData @@ -23,6 +24,18 @@ type StepFunctionReturnConfig = { } type KeysOfUnion = T extends T ? keyof T : never +export type HookHandler = (...args: any[]) => void | Promise + +/** + * Helper to convert an array of hooks to functions + */ +type ConvertHooksToFunctions = { + [K in keyof THooks]: THooks[K] extends Hook + ? { + [Fn in Name]: (callback: (input: Input) => any) => void + } + : never +}[number] /** * A step function to be used in a workflow. @@ -73,18 +86,19 @@ export type WorkflowData = (T extends Array } export type CreateWorkflowComposerContext = { - hooks_: string[] - hooksCallback_: Record + __type: string + hooks_: { + declared: string[] + registered: string[] + } + hooksCallback_: Record workflowId: string flow: OrchestratorBuilder handlers: WorkflowHandler stepBinder: ( fn: StepFunctionResult ) => WorkflowData - hookBinder: ( - name: string, - fn: Function - ) => WorkflowData + hookBinder: (name: string, fn: () => HookHandler) => void parallelizeBinder: ( fn: (this: CreateWorkflowComposerContext) => TOutput ) => TOutput @@ -193,11 +207,7 @@ export type WorkflowTransactionContext = StepExecutionContext & * } * ``` */ -export type ReturnWorkflow< - TData, - TResult, - THooks extends Record -> = { +export type ReturnWorkflow = { ( container?: LoadedModule[] | MedusaContainer ): Omit< @@ -205,22 +215,23 @@ export type ReturnWorkflow< "run" | "registerStepSuccess" | "registerStepFailure" | "cancel" > & ExportedWorkflow -} & THooks & { - runAsStep: ({ - input, - }: { - input: TData | WorkflowData - }) => ReturnType> - run: ( - ...args: Parameters< - ExportedWorkflow["run"] - > - ) => ReturnType< +} & { + runAsStep: ({ + input, + }: { + input: TData | WorkflowData + }) => ReturnType> + run: ( + ...args: Parameters< ExportedWorkflow["run"] > - getName: () => string - config: (config: TransactionModelOptions) => void - } + ) => ReturnType< + ExportedWorkflow["run"] + > + getName: () => string + config: (config: TransactionModelOptions) => void + hooks: ConvertHooksToFunctions +} /** * Extract the raw type of the expected input data of a workflow.