docs: remove usages of ts-ignore in examples (#12839)

This commit is contained in:
Shahed Nasser authored and GitHub committed 2025-06-26 17:51:49 +03:00
1 parent 7d95eb73d3
commit f7e4a80c30
25 files changed
+17689 -169

No files matched your search

@@ -157,10 +157,10 @@ Learn more about compensation functions in [this chapter](../../../fundamentals/
You can now create the workflow that uses the above step. Add the workflow to the same `src/workflows/sync-brands-to-cms.ts` file: You can now create the workflow that uses the above step. Add the workflow to the same `src/workflows/sync-brands-to-cms.ts` file:
export const syncWorkflowHighlights = [ export const syncWorkflowHighlights = [
["19", "useQueryGraphStep", "Retrieve the brand's details."], ["18", "useQueryGraphStep", "Retrieve the brand's details."],
["23", "id", "Filter by the brand's ID."], ["22", "id", "Filter by the brand's ID."],
["26", "throwIfKeyNotFound", "Throw an error if a brand with the specified ID doesn't exist."], ["25", "throwIfKeyNotFound", "Throw an error if a brand with the specified ID doesn't exist."],
["30", "syncBrandToCmsStep", "Create the brand in the third-party CMS."] ["29", "syncBrandToCmsStep", "Create the brand in the third-party CMS."]
] ]
```ts title="src/workflows/sync-brands-to-cms.ts" highlights={syncWorkflowHighlights} ```ts title="src/workflows/sync-brands-to-cms.ts" highlights={syncWorkflowHighlights}
@@ -181,7 +181,6 @@ type SyncBrandToCmsWorkflowInput = {
export const syncBrandToCmsWorkflow = createWorkflow( export const syncBrandToCmsWorkflow = createWorkflow(
"sync-brand-to-cms", "sync-brand-to-cms",
(input: SyncBrandToCmsWorkflowInput) => { (input: SyncBrandToCmsWorkflowInput) => {
// @ts-ignore
const { data: brands } = useQueryGraphStep({ const { data: brands } = useQueryGraphStep({
entity: "brand", entity: "brand",
fields: ["*"], fields: ["*"],
@@ -903,7 +903,6 @@ type WorkflowInput = {
export const sendOrderConfirmationWorkflow = createWorkflow( export const sendOrderConfirmationWorkflow = createWorkflow(
"send-order-confirmation", "send-order-confirmation",
({ id }: WorkflowInput) => { ({ id }: WorkflowInput) => {
// @ts-ignore
const { data: orders } = useQueryGraphStep({ const { data: orders } = useQueryGraphStep({
entity: "order", entity: "order",
fields: [ fields: [
+2 -2
View File
@@ -84,7 +84,7 @@ export const generatedEditDates = {
"app/learn/customization/extend-features/define-link/page.mdx": "2025-04-17T08:50:17.036Z", "app/learn/customization/extend-features/define-link/page.mdx": "2025-04-17T08:50:17.036Z",
"app/learn/customization/extend-features/page.mdx": "2024-12-09T11:02:39.244Z", "app/learn/customization/extend-features/page.mdx": "2024-12-09T11:02:39.244Z",
"app/learn/customization/extend-features/query-linked-records/page.mdx": "2025-04-18T07:41:05.912Z", "app/learn/customization/extend-features/query-linked-records/page.mdx": "2025-04-18T07:41:05.912Z",
"app/learn/customization/integrate-systems/handle-event/page.mdx": "2024-12-24T15:09:24.653Z", "app/learn/customization/integrate-systems/handle-event/page.mdx": "2025-06-26T14:26:15.310Z",
"app/learn/customization/integrate-systems/page.mdx": "2024-12-09T10:40:08.528Z", "app/learn/customization/integrate-systems/page.mdx": "2024-12-09T10:40:08.528Z",
"app/learn/customization/integrate-systems/schedule-task/page.mdx": "2025-01-28T16:42:42.071Z", "app/learn/customization/integrate-systems/schedule-task/page.mdx": "2025-01-28T16:42:42.071Z",
"app/learn/customization/integrate-systems/service/page.mdx": "2024-12-09T11:02:39.594Z", "app/learn/customization/integrate-systems/service/page.mdx": "2024-12-09T11:02:39.594Z",
@@ -117,7 +117,7 @@ export const generatedEditDates = {
"app/learn/production/worker-mode/page.mdx": "2025-03-11T15:21:50.906Z", "app/learn/production/worker-mode/page.mdx": "2025-03-11T15:21:50.906Z",
"app/learn/fundamentals/module-links/read-only/page.mdx": "2025-05-13T15:04:12.107Z", "app/learn/fundamentals/module-links/read-only/page.mdx": "2025-05-13T15:04:12.107Z",
"app/learn/fundamentals/data-models/properties/page.mdx": "2025-03-18T07:57:17.826Z", "app/learn/fundamentals/data-models/properties/page.mdx": "2025-03-18T07:57:17.826Z",
"app/learn/fundamentals/framework/page.mdx": "2025-04-25T14:26:25.000Z", "app/learn/fundamentals/framework/page.mdx": "2025-06-26T14:26:22.120Z",
"app/learn/fundamentals/api-routes/retrieve-custom-links/page.mdx": "2025-04-25T14:26:25.000Z", "app/learn/fundamentals/api-routes/retrieve-custom-links/page.mdx": "2025-04-25T14:26:25.000Z",
"app/learn/fundamentals/workflows/errors/page.mdx": "2025-04-25T14:26:25.000Z", "app/learn/fundamentals/workflows/errors/page.mdx": "2025-04-25T14:26:25.000Z",
"app/learn/fundamentals/api-routes/override/page.mdx": "2025-05-09T08:01:24.493Z", "app/learn/fundamentals/api-routes/override/page.mdx": "2025-05-09T08:01:24.493Z",
File diff suppressed because it is too large. Load diff
+3
View File
@@ -284,6 +284,9 @@ async function main() {
}, },
allowedFilesPatterns: [/^(?!.*\/(colors|icons|hooks)\/).*$/], allowedFilesPatterns: [/^(?!.*\/(colors|icons|hooks)\/).*$/],
}, },
{
dir: path.join(process.cwd(), "..", "resources", "app", "recipes"),
},
], ],
}) })
} }
@@ -518,8 +518,8 @@ Create the file `src/workflows/add-custom-to-cart.ts` with the following content
![The directory structure after adding the workflow file.](https://res.cloudinary.com/dza7lstvk/image/upload/v1738251380/Medusa%20Resources/custom-item-price-5_zorahv.jpg) ![The directory structure after adding the workflow file.](https://res.cloudinary.com/dza7lstvk/image/upload/v1738251380/Medusa%20Resources/custom-item-price-5_zorahv.jpg)
export const workflowHighlights = [ export const workflowHighlights = [
["18", "useQueryGraphStep", "Retrieve the cart's details."], ["17", "useQueryGraphStep", "Retrieve the cart's details."],
["24", "useQueryGraphStep", "Retrieve the variant's details."], ["23", "useQueryGraphStep", "Retrieve the variant's details."],
] ]
```ts title="src/workflows/add-custom-to-cart.ts" highlights={workflowHighlights} ```ts title="src/workflows/add-custom-to-cart.ts" highlights={workflowHighlights}
@@ -539,7 +539,6 @@ type AddCustomToCartWorkflowInput = {
export const addCustomToCartWorkflow = createWorkflow( export const addCustomToCartWorkflow = createWorkflow(
"add-custom-to-cart", "add-custom-to-cart",
({ cart_id, item }: AddCustomToCartWorkflowInput) => { ({ cart_id, item }: AddCustomToCartWorkflowInput) => {
// @ts-ignore
const { data: carts } = useQueryGraphStep({ const { data: carts } = useQueryGraphStep({
entity: "cart", entity: "cart",
filters: { id: cart_id }, filters: { id: cart_id },
@@ -651,7 +650,6 @@ import { WorkflowResponse } from "@medusajs/framework/workflows-sdk"
And replace the last `TODO` in the workflow with the following: And replace the last `TODO` in the workflow with the following:
```ts title="src/workflows/add-custom-to-cart.ts" ```ts title="src/workflows/add-custom-to-cart.ts"
// @ts-ignore
const { data: updatedCarts } = useQueryGraphStep({ const { data: updatedCarts } = useQueryGraphStep({
entity: "cart", entity: "cart",
filters: { id: cart_id }, filters: { id: cart_id },
@@ -635,8 +635,8 @@ You can now create the workflow using the steps provided by Medusa and your cust
To create the workflow, create the file `src/workflows/create-request-for-quote.ts` with the following content: To create the workflow, create the file `src/workflows/create-request-for-quote.ts` with the following content:
export const createRequestForQuoteHighlights = [ export const createRequestForQuoteHighlights = [
["25", "useQueryGraphStep", "Retrieve the cart's details."], ["24", "useQueryGraphStep", "Retrieve the cart's details."],
["46", "useQueryGraphStep", "Retrieve the customer's details."] ["45", "useQueryGraphStep", "Retrieve the customer's details."]
] ]
```ts title="src/workflows/create-request-for-quote.ts" highlights={createRequestForQuoteHighlights} collapsibleLines="1-20" expandButtonLabel="Show Imports" ```ts title="src/workflows/create-request-for-quote.ts" highlights={createRequestForQuoteHighlights} collapsibleLines="1-20" expandButtonLabel="Show Imports"
@@ -663,7 +663,6 @@ type WorkflowInput = {
export const createRequestForQuoteWorkflow = createWorkflow( export const createRequestForQuoteWorkflow = createWorkflow(
"create-request-for-quote", "create-request-for-quote",
(input: WorkflowInput) => { (input: WorkflowInput) => {
// @ts-ignore
const { data: carts } = useQueryGraphStep({ const { data: carts } = useQueryGraphStep({
entity: "cart", entity: "cart",
fields: [ fields: [
@@ -2584,9 +2583,9 @@ You can now implement the merchant-rejection workflow. Create the file `src/work
![Diagram showcasing the directory structure after adding the merchant reject quote workflow file](https://res.cloudinary.com/dza7lstvk/image/upload/v1741159969/Medusa%20Resources/quote-36_l1ffxm.jpg) ![Diagram showcasing the directory structure after adding the merchant reject quote workflow file](https://res.cloudinary.com/dza7lstvk/image/upload/v1741159969/Medusa%20Resources/quote-36_l1ffxm.jpg)
export const merchantRejectionWorkflowHighlights = [ export const merchantRejectionWorkflowHighlights = [
["15", "useQueryGraphStep", "Retrieve the quote's details."], ["14", "useQueryGraphStep", "Retrieve the quote's details."],
["24", "validateQuoteNotAccepted", "Validate that the quote isn't already accepted by the customer."], ["23", "validateQuoteNotAccepted", "Validate that the quote isn't already accepted by the customer."],
["29", "updateQuotesStep", "Update the quote's status to `merchant_rejected`."] ["28", "updateQuotesStep", "Update the quote's status to `merchant_rejected`."]
] ]
```ts title="src/workflows/merchant-reject-quote.ts" highlights={merchantRejectionWorkflowHighlights} ```ts title="src/workflows/merchant-reject-quote.ts" highlights={merchantRejectionWorkflowHighlights}
@@ -2603,7 +2602,6 @@ type WorkflowInput = {
export const merchantRejectQuoteWorkflow = createWorkflow( export const merchantRejectQuoteWorkflow = createWorkflow(
"merchant-reject-quote-workflow", "merchant-reject-quote-workflow",
(input: WorkflowInput) => { (input: WorkflowInput) => {
// @ts-ignore
const { data: quotes } = useQueryGraphStep({ const { data: quotes } = useQueryGraphStep({
entity: "quote", entity: "quote",
fields: ["id", "status"], fields: ["id", "status"],
@@ -2905,7 +2903,6 @@ type WorkflowInput = {
export const merchantSendQuoteWorkflow = createWorkflow( export const merchantSendQuoteWorkflow = createWorkflow(
"merchant-send-quote-workflow", "merchant-send-quote-workflow",
(input: WorkflowInput) => { (input: WorkflowInput) => {
// @ts-ignore
const { data: quotes } = useQueryGraphStep({ const { data: quotes } = useQueryGraphStep({
entity: "quote", entity: "quote",
fields: ["id", "status"], fields: ["id", "status"],
@@ -3282,9 +3279,9 @@ Create the file `src/workflows/customer-reject-quote.ts` with the following cont
![Directory structure after adding the customer reject quote workflow file](https://res.cloudinary.com/dza7lstvk/image/upload/v1741164371/Medusa%20Resources/quote-41_fgpqhz.jpg) ![Directory structure after adding the customer reject quote workflow file](https://res.cloudinary.com/dza7lstvk/image/upload/v1741164371/Medusa%20Resources/quote-41_fgpqhz.jpg)
export const customerRejectQuoteHighlights = [ export const customerRejectQuoteHighlights = [
["16", "useQueryGraphStep", "Retrieve the quote's details."], ["15", "useQueryGraphStep", "Retrieve the quote's details."],
["25", "validateQuoteNotAccepted", "Validate that the quote isn't already accepted by the customer."], ["24", "validateQuoteNotAccepted", "Validate that the quote isn't already accepted by the customer."],
["30", "updateQuotesStep", "Update the quote's status to `customer_rejected`."] ["29", "updateQuotesStep", "Update the quote's status to `customer_rejected`."]
] ]
```ts title="src/workflows/customer-reject-quote.ts" highlights={customerRejectQuoteHighlights} ```ts title="src/workflows/customer-reject-quote.ts" highlights={customerRejectQuoteHighlights}
@@ -3302,7 +3299,6 @@ type WorkflowInput = {
export const customerRejectQuoteWorkflow = createWorkflow( export const customerRejectQuoteWorkflow = createWorkflow(
"customer-reject-quote-workflow", "customer-reject-quote-workflow",
(input: WorkflowInput) => { (input: WorkflowInput) => {
// @ts-ignore
const { data: quotes } = useQueryGraphStep({ const { data: quotes } = useQueryGraphStep({
entity: "quote", entity: "quote",
fields: ["id", "status"], fields: ["id", "status"],
@@ -3511,11 +3507,11 @@ You can now implement the workflow that accepts a quote for a customer. Create t
![Directory structure after adding the customer accept quote workflow file](https://res.cloudinary.com/dza7lstvk/image/upload/v1741166025/Medusa%20Resources/quote-44_c09ts9.jpg) ![Directory structure after adding the customer accept quote workflow file](https://res.cloudinary.com/dza7lstvk/image/upload/v1741166025/Medusa%20Resources/quote-44_c09ts9.jpg)
export const customerAcceptQuoteHighlights = [ export const customerAcceptQuoteHighlights = [
["21", "useQueryGraphStep", "Retrieve the quote's details."], ["20", "useQueryGraphStep", "Retrieve the quote's details."],
["30", "validateQuoteCanAcceptStep", "Validate that the quote can be accepted."], ["29", "validateQuoteCanAcceptStep", "Validate that the quote can be accepted."],
["35", "updateQuotesStep", "Update the quote's status to `accepted`."], ["34", "updateQuotesStep", "Update the quote's status to `accepted`."],
["40", "confirmOrderEditRequestWorkflow", "Confirm the changes made on the draft order, such as changes to item quantities and prices."], ["39", "confirmOrderEditRequestWorkflow", "Confirm the changes made on the draft order, such as changes to item quantities and prices."],
["47", "updateOrderWorkflow", "Update the draft order to change its status and convert it into an order."] ["46", "updateOrderWorkflow", "Update the draft order to change its status and convert it into an order."]
] ]
```ts title="src/workflows/customer-accept-quote.ts" highlights={customerAcceptQuoteHighlights} ```ts title="src/workflows/customer-accept-quote.ts" highlights={customerAcceptQuoteHighlights}
@@ -3538,7 +3534,6 @@ type WorkflowInput = {
export const customerAcceptQuoteWorkflow = createWorkflow( export const customerAcceptQuoteWorkflow = createWorkflow(
"customer-accept-quote-workflow", "customer-accept-quote-workflow",
(input: WorkflowInput) => { (input: WorkflowInput) => {
// @ts-ignore
const { data: quotes } = useQueryGraphStep({ const { data: quotes } = useQueryGraphStep({
entity: "quote", entity: "quote",
fields: ["id", "draft_order_id", "status"], fields: ["id", "draft_order_id", "status"],
@@ -558,11 +558,9 @@ const {
updated_at: { updated_at: {
$lt: oneDayAgo, $lt: oneDayAgo,
}, },
// @ts-ignore
email: { email: {
$ne: null, $ne: null,
}, },
// @ts-ignore
completed_at: null, completed_at: null,
}, },
pagination: { pagination: {
@@ -202,12 +202,12 @@ To create the workflow, create the file `src/workflows/apply-first-purchase-prom
export const workflowHighlights = [ export const workflowHighlights = [
["7", "cart_id", "Receive cart ID as input."], ["7", "cart_id", "Receive cart ID as input."],
["14", "carts", "Retrieve the cart's details."], ["13", "carts", "Retrieve the cart's details."],
["23", "promotions", "Retrieve the first-purchase promotion's details."], ["21", "promotions", "Retrieve the first-purchase promotion's details."],
["32", "when", "Check if the first-purchase promotion can be applied."], ["29", "when", "Check if the first-purchase promotion can be applied."],
["42", "updateCartPromotionsStep", "Add the first-purchase promotion to the cart."], ["39", "updateCartPromotionsStep", "Add the first-purchase promotion to the cart."],
["51", "updatedCarts", "Retrieve the updated cart's details."], ["47", "updatedCarts", "Retrieve the updated cart's details."],
["59", "WorkflowResponse", "Return the updated cart's details."] ["55", "WorkflowResponse", "Return the updated cart's details."]
] ]
```ts title="src/workflows/apply-first-purchase-promo.ts" highlights={workflowHighlights} ```ts title="src/workflows/apply-first-purchase-promo.ts" highlights={workflowHighlights}
@@ -223,7 +223,6 @@ type WorkflowInput = {
export const applyFirstPurchasePromoWorkflow = createWorkflow( export const applyFirstPurchasePromoWorkflow = createWorkflow(
"apply-first-purchase-promo", "apply-first-purchase-promo",
(input: WorkflowInput) => { (input: WorkflowInput) => {
// @ts-ignore
const { data: carts } = useQueryGraphStep({ const { data: carts } = useQueryGraphStep({
entity: "cart", entity: "cart",
fields: ["promotions.*", "customer.*", "customer.orders.*"], fields: ["promotions.*", "customer.*", "customer.orders.*"],
@@ -232,12 +231,10 @@ export const applyFirstPurchasePromoWorkflow = createWorkflow(
} }
}) })
// @ts-ignore
const { data: promotions } = useQueryGraphStep({ const { data: promotions } = useQueryGraphStep({
entity: "promotion", entity: "promotion",
fields: ["code"], fields: ["code"],
filters: { filters: {
// @ts-ignore
code: FIRST_PURCHASE_PROMOTION_CODE code: FIRST_PURCHASE_PROMOTION_CODE
} }
}).config({ name: "retrieve-promotions" }) }).config({ name: "retrieve-promotions" })
@@ -260,7 +257,6 @@ export const applyFirstPurchasePromoWorkflow = createWorkflow(
}) })
// retrieve updated cart // retrieve updated cart
// @ts-ignore
const { data: updatedCarts } = useQueryGraphStep({ const { data: updatedCarts } = useQueryGraphStep({
entity: "cart", entity: "cart",
fields: ["*", "promotions.*"], fields: ["*", "promotions.*"],
@@ -835,14 +835,14 @@ Now that you have all the steps, you can create the workflow that uses them.
To create the workflow, create the file `src/workflows/handle-order-points.ts` with the following content: To create the workflow, create the file `src/workflows/handle-order-points.ts` with the following content:
export const handleOrderPointsHighlights = [ export const handleOrderPointsHighlights = [
["18", "useQueryGraphStep", "Retrieve the order's details."], ["17", "useQueryGraphStep", "Retrieve the order's details."],
["38", "validateCustomerExistsStep", "Validate that the customer is registered."], ["37", "validateCustomerExistsStep", "Validate that the customer is registered."],
["42", "getCartLoyaltyPromoStep", "Retrieve the cart's loyalty promotion."], ["41", "getCartLoyaltyPromoStep", "Retrieve the cart's loyalty promotion."],
["46", "when", "Check whether the order's cart has a loyalty promotion."], ["45", "when", "Check whether the order's cart has a loyalty promotion."],
["51", "deductPurchasePointsStep", "Deduct points from the customer's loyalty points."], ["50", "deductPurchasePointsStep", "Deduct points from the customer's loyalty points."],
["56", "updatePromotionsStep", "Deactivate the cart's loyalty promotion."], ["55", "updatePromotionsStep", "Deactivate the cart's loyalty promotion."],
["65", "when", "Check whether the order's cart doesn't have a loyalty promotion."], ["64", "when", "Check whether the order's cart doesn't have a loyalty promotion."],
["70", "addPurchaseAsPointsStep", "Add points to the customer's loyalty points."], ["69", "addPurchaseAsPointsStep", "Add points to the customer's loyalty points."],
] ]
```ts title="src/workflows/handle-order-points.ts" highlights={handleOrderPointsHighlights} collapsibleLines="1-9" expandButtonLabel="Show Imports" ```ts title="src/workflows/handle-order-points.ts" highlights={handleOrderPointsHighlights} collapsibleLines="1-9" expandButtonLabel="Show Imports"
@@ -862,7 +862,6 @@ type WorkflowInput = {
export const handleOrderPointsWorkflow = createWorkflow( export const handleOrderPointsWorkflow = createWorkflow(
"handle-order-points", "handle-order-points",
({ order_id }: WorkflowInput) => { ({ order_id }: WorkflowInput) => {
// @ts-ignore
const { data: orders } = useQueryGraphStep({ const { data: orders } = useQueryGraphStep({
entity: "order", entity: "order",
fields: [ fields: [
@@ -1394,10 +1393,10 @@ You can now create the workflow that applies a loyalty promotion to the cart.
To create the workflow, create the file `src/workflows/apply-loyalty-on-cart.ts` with the following content: To create the workflow, create the file `src/workflows/apply-loyalty-on-cart.ts` with the following content:
export const applyLoyaltyOnCartWorkflowHighlights = [ export const applyLoyaltyOnCartWorkflowHighlights = [
["45", "useQueryGraphStep", "Retrieve the cart's details."], ["44", "useQueryGraphStep", "Retrieve the cart's details."],
["56", "validateCustomerExistsStep", "Validate that the customer is registered."], ["55", "validateCustomerExistsStep", "Validate that the customer is registered."],
["60", "getCartLoyaltyPromoStep", "Retrieve the cart's loyalty promotion."], ["59", "getCartLoyaltyPromoStep", "Retrieve the cart's loyalty promotion."],
["65", "getCartLoyaltyPromoAmountStep", "Get the amount to be discounted based on the loyalty points."], ["64", "getCartLoyaltyPromoAmountStep", "Get the amount to be discounted based on the loyalty points."],
] ]
```ts title="src/workflows/apply-loyalty-on-cart.ts" highlights={applyLoyaltyOnCartWorkflowHighlights} collapsibleLines="1-24" expandButtonLabel="Show Imports" ```ts title="src/workflows/apply-loyalty-on-cart.ts" highlights={applyLoyaltyOnCartWorkflowHighlights} collapsibleLines="1-24" expandButtonLabel="Show Imports"
@@ -1444,7 +1443,6 @@ const fields = [
export const applyLoyaltyOnCartWorkflow = createWorkflow( export const applyLoyaltyOnCartWorkflow = createWorkflow(
"apply-loyalty-on-cart", "apply-loyalty-on-cart",
(input: WorkflowInput) => { (input: WorkflowInput) => {
// @ts-ignore
const { data: carts } = useQueryGraphStep({ const { data: carts } = useQueryGraphStep({
entity: "cart", entity: "cart",
fields, fields,
@@ -1559,7 +1557,7 @@ export const createLoyaltyPromoStepHighlights = [
["5", "transform", "Prepare the data to update the cart's promotions."], ["5", "transform", "Prepare the data to update the cart's promotions."],
["25", "updateCartPromotionsWorkflow", "Update the cart's promotions with the new loyalty promotion."], ["25", "updateCartPromotionsWorkflow", "Update the cart's promotions with the new loyalty promotion."],
["29", "updateCartsStep", "Update the cart to store the ID of the loyalty promotion in the metadata."], ["29", "updateCartsStep", "Update the cart to store the ID of the loyalty promotion in the metadata."],
["38", "useQueryGraphStep", "Retrieve the cart's details again."], ["37", "useQueryGraphStep", "Retrieve the cart's details again."],
] ]
```ts title="src/workflows/apply-loyalty-on-cart.ts" highlights={createLoyaltyPromoStepHighlights} ```ts title="src/workflows/apply-loyalty-on-cart.ts" highlights={createLoyaltyPromoStepHighlights}
@@ -1599,7 +1597,6 @@ updateCartsStep([
]) ])
// retrieve cart with updated promotions // retrieve cart with updated promotions
// @ts-ignore
const { data: updatedCarts } = useQueryGraphStep({ const { data: updatedCarts } = useQueryGraphStep({
entity: "cart", entity: "cart",
fields, fields,
@@ -1800,13 +1797,13 @@ Since you already have all the steps, you can create the workflow.
To create the workflow, create the file `src/workflows/remove-loyalty-from-cart.ts` with the following content: To create the workflow, create the file `src/workflows/remove-loyalty-from-cart.ts` with the following content:
export const removeLoyaltyFromCartWorkflowHighlights = [ export const removeLoyaltyFromCartWorkflowHighlights = [
["36", "useQueryGraphStep", "Retrieve the cart's details."], ["35", "useQueryGraphStep", "Retrieve the cart's details."],
["44", "getCartLoyaltyPromoStep", "Retrieve the cart's loyalty promotion."], ["43", "getCartLoyaltyPromoStep", "Retrieve the cart's loyalty promotion."],
["49", "updateCartPromotionsWorkflow", "Update the cart's promotions to remove the loyalty promotion."], ["48", "updateCartPromotionsWorkflow", "Update the cart's promotions to remove the loyalty promotion."],
["57", "transform", "Prepare the new metadata to remove the loyalty promotion ID."], ["56", "transform", "Prepare the new metadata to remove the loyalty promotion ID."],
["68", "updateCartsStep", "Update the cart to remove the loyalty promotion ID from the metadata."], ["67", "updateCartsStep", "Update the cart to remove the loyalty promotion ID from the metadata."],
["75", "updatePromotionsStep", "Deactivate the loyalty promotion."], ["74", "updatePromotionsStep", "Deactivate the loyalty promotion."],
["84", "useQueryGraphStep", "Retrieve the cart's details again."], ["82", "useQueryGraphStep", "Retrieve the cart's details again."],
] ]
```ts title="src/workflows/remove-loyalty-from-cart.ts" collapsibleLines="1-15" expandButtonLabel="Show Imports" highlights={removeLoyaltyFromCartWorkflowHighlights} ```ts title="src/workflows/remove-loyalty-from-cart.ts" collapsibleLines="1-15" expandButtonLabel="Show Imports" highlights={removeLoyaltyFromCartWorkflowHighlights}
@@ -1844,7 +1841,6 @@ const fields = [
export const removeLoyaltyFromCartWorkflow = createWorkflow( export const removeLoyaltyFromCartWorkflow = createWorkflow(
"remove-loyalty-from-cart", "remove-loyalty-from-cart",
(input: WorkflowInput) => { (input: WorkflowInput) => {
// @ts-ignore
const { data: carts } = useQueryGraphStep({ const { data: carts } = useQueryGraphStep({
entity: "cart", entity: "cart",
fields, fields,
@@ -1892,7 +1888,6 @@ export const removeLoyaltyFromCartWorkflow = createWorkflow(
]) ])
// retrieve cart with updated promotions // retrieve cart with updated promotions
// @ts-ignore
const { data: updatedCarts } = useQueryGraphStep({ const { data: updatedCarts } = useQueryGraphStep({
entity: "cart", entity: "cart",
fields, fields,
@@ -505,7 +505,6 @@ export const createReviewWorkflow = createWorkflow(
"create-review", "create-review",
(input: CreateReviewInput) => { (input: CreateReviewInput) => {
// Check product exists // Check product exists
// @ts-ignore
useQueryGraphStep({ useQueryGraphStep({
entity: "product", entity: "product",
fields: ["id"], fields: ["id"],
@@ -520,7 +519,6 @@ export const createReviewWorkflow = createWorkflow(
// Create the review // Create the review
const review = createReviewStep(input) const review = createReviewStep(input)
// @ts-ignore
return new WorkflowResponse({ return new WorkflowResponse({
review, review,
}) })
@@ -1522,8 +1520,8 @@ export const GetStoreReviewsHighlights = [
["10", "GetStoreReviewsSchema", "Define the query parameters schema."], ["10", "GetStoreReviewsSchema", "Define the query parameters schema."],
["12", "GET", "Expose a GET API route."], ["12", "GET", "Expose a GET API route."],
["26", "query.graph", "Retrieve reviews with pagination."], ["26", "query.graph", "Retrieve reviews with pagination."],
["31", "status", "Only retrieve approved reviews."], ["30", "status", "Only retrieve approved reviews."],
["41", "average_rating", "Retrieve the average rating of the product."], ["40", "average_rating", "Retrieve the average rating of the product."],
] ]
```ts title="src/api/store/products/[id]/reviews/route.ts" highlights={GetStoreReviewsHighlights} collapsibleLines="1-9" expandButtonLabel="Show Imports" ```ts title="src/api/store/products/[id]/reviews/route.ts" highlights={GetStoreReviewsHighlights} collapsibleLines="1-9" expandButtonLabel="Show Imports"
@@ -1556,7 +1554,6 @@ export const GET = async (
entity: "review", entity: "review",
filters: { filters: {
product_id: id, product_id: id,
// @ts-ignore
status: "approved", status: "approved",
}, },
...req.queryConfig, ...req.queryConfig,
@@ -179,7 +179,7 @@ This workflow uses steps from Medusa's `@medusajs/medusa/core-flows` package. So
To create the workflow, create the file `src/workflows/reorder.ts` with the following content: To create the workflow, create the file `src/workflows/reorder.ts` with the following content:
export const workflowHighlights1 = [ export const workflowHighlights1 = [
["20", "useQueryGraphStep", "Retrieve the order's details."], ["19", "useQueryGraphStep", "Retrieve the order's details."],
] ]
```ts title="src/workflows/reorder.ts" highlights={workflowHighlights1} ```ts title="src/workflows/reorder.ts" highlights={workflowHighlights1}
@@ -201,7 +201,6 @@ type ReorderWorkflowInput = {
export const reorderWorkflow = createWorkflow( export const reorderWorkflow = createWorkflow(
"reorder", "reorder",
({ order_id }: ReorderWorkflowInput) => { ({ order_id }: ReorderWorkflowInput) => {
// @ts-ignore
const { data: orders } = useQueryGraphStep({ const { data: orders } = useQueryGraphStep({
entity: "order", entity: "order",
fields: [ fields: [
@@ -359,12 +358,11 @@ Finally, you need to retrieve the cart's details and return them as the workflow
Replace the `TODO` in the workflow with the following: Replace the `TODO` in the workflow with the following:
export const workflowHighlights4 = [ export const workflowHighlights4 = [
["2", "useQueryGraphStep", "Retrieve the cart's details."], ["1", "useQueryGraphStep", "Retrieve the cart's details."],
["28", "WorkflowResponse", "Return the cart's details."], ["27", "WorkflowResponse", "Return the cart's details."],
] ]
```ts title="src/workflows/reorder.ts" highlights={workflowHighlights4} ```ts title="src/workflows/reorder.ts" highlights={workflowHighlights4}
// @ts-ignore
const { data: carts } = useQueryGraphStep({ const { data: carts } = useQueryGraphStep({
entity: "cart", entity: "cart",
fields: [ fields: [
@@ -533,7 +533,6 @@ type SyncProductsWorkflowInput = {
export const syncProductsWorkflow = createWorkflow( export const syncProductsWorkflow = createWorkflow(
"sync-products", "sync-products",
({ filters, limit, offset }: SyncProductsWorkflowInput) => { ({ filters, limit, offset }: SyncProductsWorkflowInput) => {
// @ts-ignore
const { data, metadata } = useQueryGraphStep({ const { data, metadata } = useQueryGraphStep({
entity: "product", entity: "product",
fields: ["id", "title", "description", "handle", "thumbnail", "categories.*", "tags.*"], fields: ["id", "title", "description", "handle", "thumbnail", "categories.*", "tags.*"],
@@ -542,7 +541,6 @@ export const syncProductsWorkflow = createWorkflow(
skip: offset, skip: offset,
}, },
filters: { filters: {
// @ts-ignore
status: "published", status: "published",
...filters, ...filters,
}, },
@@ -1405,7 +1405,6 @@ type WorkflowInput = {
export const createProductsContentfulWorkflow = createWorkflow( export const createProductsContentfulWorkflow = createWorkflow(
{ name: "create-products-contentful-workflow" }, { name: "create-products-contentful-workflow" },
(input: WorkflowInput) => { (input: WorkflowInput) => {
// @ts-ignore
const { data } = useQueryGraphStep({ const { data } = useQueryGraphStep({
entity: "product", entity: "product",
fields: [ fields: [
@@ -1172,9 +1172,9 @@ You'll create a workflow that retrieves the latest products added to your Medusa
Create the file `src/workflows/send-newsletter.ts` with the following content: Create the file `src/workflows/send-newsletter.ts` with the following content:
export const workflowHighlights = [ export const workflowHighlights = [
["15", "useQueryGraphStep", "Retrieve the products created in the last 7 days."], ["14", "useQueryGraphStep", "Retrieve the products created in the last 7 days."],
["32", "when", "Check whether there are new products."], ["31", "when", "Check whether there are new products."],
["34", "sendNotificationsStep", "Create a notification with the new products data."], ["33", "sendNotificationsStep", "Create a notification with the new products data."],
] ]
```ts title="src/workflows/send-newsletter.ts" highlights={workflowHighlights} ```ts title="src/workflows/send-newsletter.ts" highlights={workflowHighlights}
@@ -1191,7 +1191,6 @@ import {
export const sendNewProductsNewsletter = createWorkflow( export const sendNewProductsNewsletter = createWorkflow(
"send-new-products-newsletter", "send-new-products-newsletter",
(input) => { (input) => {
// @ts-ignore
const { data: products } = useQueryGraphStep({ const { data: products } = useQueryGraphStep({
entity: "product", entity: "product",
fields: [ fields: [
@@ -1199,9 +1199,9 @@ You'll now create the workflow that uses the `sendNotificationStep` to send the
Create the file `src/workflows/send-order-confirmation.ts` with the following content: Create the file `src/workflows/send-order-confirmation.ts` with the following content:
export const workflowHighlights = [ export const workflowHighlights = [
["12", "sendOrderConfirmationWorkflow", "Create the workflow that sends an order confirmation email."], ["13", "sendOrderConfirmationWorkflow", "Create the workflow that sends an order confirmation email."],
["16", "useQueryGraphStep", "Retrieve the order's details."], ["15", "useQueryGraphStep", "Retrieve the order's details."],
["44", "sendNotificationStep", "Send the order confirmation email."] ["43", "sendNotificationStep", "Send the order confirmation email."]
] ]
```ts title="src/workflows/send-order-confirmation.ts" highlights={workflowHighlights} ```ts title="src/workflows/send-order-confirmation.ts" highlights={workflowHighlights}
@@ -1219,7 +1219,6 @@ type WorkflowInput = {
export const sendOrderConfirmationWorkflow = createWorkflow( export const sendOrderConfirmationWorkflow = createWorkflow(
"send-order-confirmation", "send-order-confirmation",
({ id }: WorkflowInput) => { ({ id }: WorkflowInput) => {
// @ts-ignore
const { data: orders } = useQueryGraphStep({ const { data: orders } = useQueryGraphStep({
entity: "order", entity: "order",
fields: [ fields: [
@@ -722,7 +722,6 @@ export const syncStep = createStep(
fields: [ fields: [
"id", "id",
"title", "title",
// @ts-ignore
"sanity_product.*", "sanity_product.*",
], ],
filters, filters,
@@ -507,9 +507,9 @@ Next, you'll create the workflow that tracks the order placement event.
To create the workflow, create the file `src/workflows/track-order-placed.ts` with the following content: To create the workflow, create the file `src/workflows/track-order-placed.ts` with the following content:
export const workflowHighlights = [ export const workflowHighlights = [
["16", "useQueryGraphStep", "Retrieve the order's details."], ["15", "useQueryGraphStep", "Retrieve the order's details."],
["35", "transform", "Prepare data for tracking."], ["34", "transform", "Prepare data for tracking."],
["58", "trackEventStep", "Track the order placement event in Segment."] ["57", "trackEventStep", "Track the order placement event in Segment."]
] ]
```ts title="src/workflows/track-order-placed.ts" highlights={workflowHighlights} ```ts title="src/workflows/track-order-placed.ts" highlights={workflowHighlights}
@@ -527,7 +527,6 @@ type WorkflowInput = {
export const trackOrderPlacedWorkflow = createWorkflow( export const trackOrderPlacedWorkflow = createWorkflow(
"track-order-placed", "track-order-placed",
({ id }: WorkflowInput) => { ({ id }: WorkflowInput) => {
// @ts-ignore
const { data: orders } = useQueryGraphStep({ const { data: orders } = useQueryGraphStep({
entity: "order", entity: "order",
fields: [ fields: [
@@ -557,8 +557,8 @@ Medusa provides both steps in its `@medusajs/medusa/core-flows` package.
So, to create the workflow, create the file `src/workflows/order-placed-notification.ts` with the following content: So, to create the workflow, create the file `src/workflows/order-placed-notification.ts` with the following content:
export const orderPlacedNotificationWorkflowHighlights = [ export const orderPlacedNotificationWorkflowHighlights = [
["14", "useQueryGraphStep", "Retrieve the order details using the Query Graph."], ["13", "useQueryGraphStep", "Retrieve the order details using the Query Graph."],
["35", "sendNotificationsStep", "Send a notification to Slack with the order details."] ["34", "sendNotificationsStep", "Send a notification to Slack with the order details."]
] ]
```ts title="src/workflows/order-placed-notification.ts" highlights={orderPlacedNotificationWorkflowHighlights} ```ts title="src/workflows/order-placed-notification.ts" highlights={orderPlacedNotificationWorkflowHighlights}
@@ -574,7 +574,6 @@ type WorkflowInput = {
export const orderPlacedNotificationWorkflow = createWorkflow( export const orderPlacedNotificationWorkflow = createWorkflow(
"order-placed-notification", "order-placed-notification",
({ id }: WorkflowInput) => { ({ id }: WorkflowInput) => {
// @ts-ignore
const { data: orders } = useQueryGraphStep({ const { data: orders } = useQueryGraphStep({
entity: "order", entity: "order",
fields: [ fields: [
@@ -622,7 +622,7 @@ export const createBundledProductWorkflowHighlights = [
["38", "createRemoteLinkStep", "Create a link between the bundle and the Medusa product."], ["38", "createRemoteLinkStep", "Create a link between the bundle and the Medusa product."],
["47", "transform", "Prepare the data to create links between bundle items and Medusa products."], ["47", "transform", "Prepare the data to create links between bundle items and Medusa products."],
["61", "createRemoteLinkStep", "Create the links between the bundle items and the Medusa products."], ["61", "createRemoteLinkStep", "Create the links between the bundle items and the Medusa products."],
["67", "useQueryGraphStep", "Retrieve the created bundle and its items."], ["66", "useQueryGraphStep", "Retrieve the created bundle and its items."],
] ]
```ts title="src/workflows/create-bundled-product.ts" highlights={createBundledProductWorkflowHighlights} ```ts title="src/workflows/create-bundled-product.ts" highlights={createBundledProductWorkflowHighlights}
@@ -691,7 +691,6 @@ export const createBundledProductWorkflow = createWorkflow(
}) })
// retrieve bundled product with items // retrieve bundled product with items
// @ts-ignore
const { data } = useQueryGraphStep({ const { data } = useQueryGraphStep({
entity: "bundle", entity: "bundle",
fields: ["*", "items.*"], fields: ["*", "items.*"],
@@ -1890,10 +1889,10 @@ You can now create the workflow with the custom add-to-cart logic.
To create the workflow, create the file `src/workflows/add-bundle-to-cart.ts` with the following content: To create the workflow, create the file `src/workflows/add-bundle-to-cart.ts` with the following content:
export const addBundleToCartWorkflowHighlights = [ export const addBundleToCartWorkflowHighlights = [
["29", "useQueryGraphStep", "Retrieve the bundle, its items, and their products and variants."], ["28", "useQueryGraphStep", "Retrieve the bundle, its items, and their products and variants."],
["45", "prepareBundleCartDataStep", "Validate and prepare the items to be added to the cart."], ["44", "prepareBundleCartDataStep", "Validate and prepare the items to be added to the cart."],
["51", "addToCartWorkflow", "Add the items in the bundle to the cart."], ["50", "addToCartWorkflow", "Add the items in the bundle to the cart."],
["59", "useQueryGraphStep", "Retrieve the updated cart."], ["57", "useQueryGraphStep", "Retrieve the updated cart."],
] ]
```ts title="src/workflows/add-bundle-to-cart.ts" highlights={addBundleToCartWorkflowHighlights} collapsibleLines="1-14" expandButtonLabel="Show Imports" ```ts title="src/workflows/add-bundle-to-cart.ts" highlights={addBundleToCartWorkflowHighlights} collapsibleLines="1-14" expandButtonLabel="Show Imports"
@@ -1924,7 +1923,6 @@ type AddBundleToCartWorkflowInput = {
export const addBundleToCartWorkflow = createWorkflow( export const addBundleToCartWorkflow = createWorkflow(
"add-bundle-to-cart", "add-bundle-to-cart",
({ cart_id, bundle_id, quantity, items }: AddBundleToCartWorkflowInput) => { ({ cart_id, bundle_id, quantity, items }: AddBundleToCartWorkflowInput) => {
// @ts-ignore
const { data } = useQueryGraphStep({ const { data } = useQueryGraphStep({
entity: "bundle", entity: "bundle",
fields: [ fields: [
@@ -1954,7 +1952,6 @@ export const addBundleToCartWorkflow = createWorkflow(
}, },
}) })
// @ts-ignore
const { data: updatedCarts } = useQueryGraphStep({ const { data: updatedCarts } = useQueryGraphStep({
entity: "cart", entity: "cart",
filters: { id: cart_id }, filters: { id: cart_id },
@@ -2804,7 +2801,7 @@ export const removeBundleFromCartWorkflowHighlights = [
["19", "useQueryGraphStep", "Retrieve the details of the cart and its items."], ["19", "useQueryGraphStep", "Retrieve the details of the cart and its items."],
["33", "transform", "Prepare the IDs of the items to remove."], ["33", "transform", "Prepare the IDs of the items to remove."],
["42", "deleteLineItemsWorkflow", "Remove the items in the bundle from the cart."], ["42", "deleteLineItemsWorkflow", "Remove the items in the bundle from the cart."],
["51", "useQueryGraphStep", "Retrieve the updated cart."], ["50", "useQueryGraphStep", "Retrieve the updated cart."],
] ]
```ts title="src/workflows/remove-bundle-from-cart.ts" collapsibleLines="1-10" expandButtonLabel="Show Imports" highlights={removeBundleFromCartWorkflowHighlights} ```ts title="src/workflows/remove-bundle-from-cart.ts" collapsibleLines="1-10" expandButtonLabel="Show Imports" highlights={removeBundleFromCartWorkflowHighlights}
@@ -2857,7 +2854,6 @@ export const removeBundleFromCartWorkflow = createWorkflow(
}) })
// retrieve cart again // retrieve cart again
// @ts-ignore
const { data: updatedCarts } = useQueryGraphStep({ const { data: updatedCarts } = useQueryGraphStep({
entity: "cart", entity: "cart",
fields: [ fields: [
@@ -612,7 +612,7 @@ export const subscriptionWorkflow1Highlights = [
["16", "createWorkflow", "Create a workflow."], ["16", "createWorkflow", "Create a workflow."],
["23", "transform", "Set the customer ID to an empty string if not provided."], ["23", "transform", "Set the customer ID to an empty string if not provided."],
["28", "when", "If email is not set, try to retrieve customer by its ID."], ["28", "when", "If email is not set, try to retrieve customer by its ID."],
["48", "transform", "Set the email either to the one in the input or the specified customer's email."], ["47", "transform", "Set the email either to the one in the input or the specified customer's email."],
] ]
```ts title="src/workflows/create-restock-subscription/index.ts" highlights={subscriptionWorkflow1Highlights} ```ts title="src/workflows/create-restock-subscription/index.ts" highlights={subscriptionWorkflow1Highlights}
@@ -650,7 +650,6 @@ export const createRestockSubscriptionWorkflow = createWorkflow(
return !customer.email return !customer.email
} }
).then(() => { ).then(() => {
// @ts-ignore
const { data } = useQueryGraphStep({ const { data } = useQueryGraphStep({
entity: "customer", entity: "customer",
fields: ["email"], fields: ["email"],
@@ -693,13 +692,13 @@ Next, replace the `TODO` with the following:
export const subscriptionWorkflow2Highlights = [ export const subscriptionWorkflow2Highlights = [
["1", "validateVariantOutOfStockStep", "Validate that the variant is out of stock in the specified sales channel."], ["1", "validateVariantOutOfStockStep", "Validate that the variant is out of stock in the specified sales channel."],
["7", "useQueryGraphStep", "Get the restock subscription to check if it already exists."], ["6", "useQueryGraphStep", "Get the restock subscription to check if it already exists."],
["17", "when", "Perform an action if the restock subscription doesn't exist."], ["16", "when", "Perform an action if the restock subscription doesn't exist."],
["21", "createRestockSubscriptionStep", "Create the restock subscription if it doesn't exist."], ["20", "createRestockSubscriptionStep", "Create the restock subscription if it doesn't exist."],
["29", "when", "Perform an action if the restock subscription exists."], ["28", "when", "Perform an action if the restock subscription exists."],
["33", "updateRestockSubscriptionStep", "Update the restock subscription if it exists."], ["32", "updateRestockSubscriptionStep", "Update the restock subscription if it exists."],
["40", "useQueryGraphStep", "Retrieve the restock subscription again to return it."], ["38", "useQueryGraphStep", "Retrieve the restock subscription again to return it."],
["50", "WorkflowResponse", "Return the restock subscription."] ["48", "WorkflowResponse", "Return the restock subscription."]
] ]
```ts title="src/workflows/create-restock-subscription/index.ts" highlights={subscriptionWorkflow2Highlights} ```ts title="src/workflows/create-restock-subscription/index.ts" highlights={subscriptionWorkflow2Highlights}
@@ -708,7 +707,6 @@ validateVariantOutOfStockStep({
sales_channel_id, sales_channel_id,
}) })
// @ts-ignore
const { data: restockSubscriptions } = useQueryGraphStep({ const { data: restockSubscriptions } = useQueryGraphStep({
entity: "restock_subscription", entity: "restock_subscription",
fields: ["*"], fields: ["*"],
@@ -741,7 +739,6 @@ when({ restockSubscriptions }, ({ restockSubscriptions }) => {
}) })
}) })
// @ts-ignore
const { data: restockSubscription } = useQueryGraphStep({ const { data: restockSubscription } = useQueryGraphStep({
entity: "restock_subscription", entity: "restock_subscription",
fields: ["*"], fields: ["*"],
@@ -1365,7 +1362,6 @@ export const sendRestockNotificationsWorkflow = createWorkflow(
return filters return filters
}) })
// @ts-ignore
const { data: restockedSubscriptionsWithEmails } = useQueryGraphStep({ const { data: restockedSubscriptionsWithEmails } = useQueryGraphStep({
entity: "restock_subscription", entity: "restock_subscription",
fields: ["*", "product_variant.*"], fields: ["*", "product_variant.*"],
@@ -1,5 +1,11 @@
import { CodeTab, CodeTabs } from "docs-ui" import { CodeTab, CodeTabs } from "docs-ui"
<Note type="success" title="Issue Resolved">
This issue has been resolved in [Medusa v2.8.5+](https://github.com/medusajs/medusa/releases/tag/v2.8.5). If you're facing this error, please [update your Medusa application](!docs!/learn/update) and run the `dev` command. If the issue persists, please [report it on GitHub](https://github.com/medusajs/medusa/issues/new/choose).
</Note>
If you get the following error while using `query.graph` or `useQueryGraphStep`: If you get the following error while using `query.graph` or `useQueryGraphStep`:
```bash ```bash
+17 -16
View File
@@ -3135,7 +3135,7 @@ export const generatedEditDates = {
"references/product/interfaces/product.FilterableProductProps/page.mdx": "2025-06-25T10:11:42.703Z", "references/product/interfaces/product.FilterableProductProps/page.mdx": "2025-06-25T10:11:42.703Z",
"references/types/HttpTypes/interfaces/types.HttpTypes.AdminBatchProductVariantRequest/page.mdx": "2024-12-09T13:21:34.309Z", "references/types/HttpTypes/interfaces/types.HttpTypes.AdminBatchProductVariantRequest/page.mdx": "2024-12-09T13:21:34.309Z",
"references/types/WorkflowTypes/ProductWorkflow/interfaces/types.WorkflowTypes.ProductWorkflow.ExportProductsDTO/page.mdx": "2025-06-25T10:11:40.398Z", "references/types/WorkflowTypes/ProductWorkflow/interfaces/types.WorkflowTypes.ProductWorkflow.ExportProductsDTO/page.mdx": "2025-06-25T10:11:40.398Z",
"app/integrations/guides/sanity/page.mdx": "2025-05-20T07:51:40.716Z", "app/integrations/guides/sanity/page.mdx": "2025-06-26T12:41:14.249Z",
"references/api_key/types/api_key.FindConfigOrder/page.mdx": "2024-11-25T17:49:28.715Z", "references/api_key/types/api_key.FindConfigOrder/page.mdx": "2024-11-25T17:49:28.715Z",
"references/auth/types/auth.FindConfigOrder/page.mdx": "2024-11-25T17:49:28.887Z", "references/auth/types/auth.FindConfigOrder/page.mdx": "2024-11-25T17:49:28.887Z",
"references/cart/types/cart.FindConfigOrder/page.mdx": "2024-11-25T17:49:29.455Z", "references/cart/types/cart.FindConfigOrder/page.mdx": "2024-11-25T17:49:29.455Z",
@@ -5524,7 +5524,7 @@ export const generatedEditDates = {
"references/workflows/classes/workflows.WorkflowResponse/page.mdx": "2025-04-11T09:04:53.140Z", "references/workflows/classes/workflows.WorkflowResponse/page.mdx": "2025-04-11T09:04:53.140Z",
"references/workflows/interfaces/workflows.ApplyStepOptions/page.mdx": "2025-05-20T07:51:41.181Z", "references/workflows/interfaces/workflows.ApplyStepOptions/page.mdx": "2025-05-20T07:51:41.181Z",
"references/workflows/types/workflows.WorkflowData/page.mdx": "2024-12-23T13:57:08.059Z", "references/workflows/types/workflows.WorkflowData/page.mdx": "2024-12-23T13:57:08.059Z",
"app/integrations/guides/resend/page.mdx": "2025-05-20T07:51:40.716Z", "app/integrations/guides/resend/page.mdx": "2025-06-26T12:38:47.063Z",
"references/api_key_models/variables/api_key_models.ApiKey/page.mdx": "2025-06-25T10:11:44.704Z", "references/api_key_models/variables/api_key_models.ApiKey/page.mdx": "2025-06-25T10:11:44.704Z",
"references/cart/ICartModuleService/methods/cart.ICartModuleService.updateShippingMethods/page.mdx": "2025-06-25T10:11:35.302Z", "references/cart/ICartModuleService/methods/cart.ICartModuleService.updateShippingMethods/page.mdx": "2025-06-25T10:11:35.302Z",
"references/cart/interfaces/cart.UpdateShippingMethodDTO/page.mdx": "2025-06-25T10:11:35.052Z", "references/cart/interfaces/cart.UpdateShippingMethodDTO/page.mdx": "2025-06-25T10:11:35.052Z",
@@ -5565,7 +5565,7 @@ export const generatedEditDates = {
"references/modules/sales_channel_models/page.mdx": "2024-12-10T14:55:13.205Z", "references/modules/sales_channel_models/page.mdx": "2024-12-10T14:55:13.205Z",
"references/types/DmlTypes/types/types.DmlTypes.KnownDataTypes/page.mdx": "2024-12-17T16:57:19.922Z", "references/types/DmlTypes/types/types.DmlTypes.KnownDataTypes/page.mdx": "2024-12-17T16:57:19.922Z",
"references/types/DmlTypes/types/types.DmlTypes.RelationshipTypes/page.mdx": "2024-12-10T14:54:55.435Z", "references/types/DmlTypes/types/types.DmlTypes.RelationshipTypes/page.mdx": "2024-12-10T14:54:55.435Z",
"app/recipes/commerce-automation/restock-notification/page.mdx": "2025-05-20T07:51:40.719Z", "app/recipes/commerce-automation/restock-notification/page.mdx": "2025-06-26T12:40:40.542Z",
"app/integrations/guides/shipstation/page.mdx": "2025-05-20T07:51:40.717Z", "app/integrations/guides/shipstation/page.mdx": "2025-05-20T07:51:40.717Z",
"app/nextjs-starter/guides/customize-stripe/page.mdx": "2025-05-20T07:51:40.717Z", "app/nextjs-starter/guides/customize-stripe/page.mdx": "2025-05-20T07:51:40.717Z",
"references/core_flows/Cart/Workflows_Cart/functions/core_flows.Cart.Workflows_Cart.listShippingOptionsForCartWithPricingWorkflow/page.mdx": "2025-06-25T10:11:28.364Z", "references/core_flows/Cart/Workflows_Cart/functions/core_flows.Cart.Workflows_Cart.listShippingOptionsForCartWithPricingWorkflow/page.mdx": "2025-06-25T10:11:28.364Z",
@@ -5873,7 +5873,7 @@ export const generatedEditDates = {
"app/commerce-modules/payment/account-holder/page.mdx": "2025-04-07T07:31:20.235Z", "app/commerce-modules/payment/account-holder/page.mdx": "2025-04-07T07:31:20.235Z",
"app/troubleshooting/test-errors/page.mdx": "2025-01-31T13:08:42.639Z", "app/troubleshooting/test-errors/page.mdx": "2025-01-31T13:08:42.639Z",
"app/commerce-modules/product/variant-inventory/page.mdx": "2025-04-25T13:25:02.408Z", "app/commerce-modules/product/variant-inventory/page.mdx": "2025-04-25T13:25:02.408Z",
"app/examples/guides/custom-item-price/page.mdx": "2025-05-20T07:51:40.712Z", "app/examples/guides/custom-item-price/page.mdx": "2025-06-26T11:53:06.748Z",
"references/core_flows/Cart/Steps_Cart/functions/core_flows.Cart.Steps_Cart.validateShippingStep/page.mdx": "2025-04-11T09:04:35.729Z", "references/core_flows/Cart/Steps_Cart/functions/core_flows.Cart.Steps_Cart.validateShippingStep/page.mdx": "2025-04-11T09:04:35.729Z",
"references/core_flows/Cart/Steps_Cart/variables/core_flows.Cart.Steps_Cart.validateShippingStepId/page.mdx": "2025-02-11T11:36:39.228Z", "references/core_flows/Cart/Steps_Cart/variables/core_flows.Cart.Steps_Cart.validateShippingStepId/page.mdx": "2025-02-11T11:36:39.228Z",
"references/core_flows/Payment_Collection/Steps_Payment_Collection/functions/core_flows.Payment_Collection.Steps_Payment_Collection.createPaymentAccountHolderStep/page.mdx": "2025-02-24T10:48:31.714Z", "references/core_flows/Payment_Collection/Steps_Payment_Collection/functions/core_flows.Payment_Collection.Steps_Payment_Collection.createPaymentAccountHolderStep/page.mdx": "2025-02-24T10:48:31.714Z",
@@ -5998,7 +5998,7 @@ export const generatedEditDates = {
"references/core_flows/types/core_flows.UpdateRequestItemReturnValidationStepInput/page.mdx": "2025-06-25T10:11:34.024Z", "references/core_flows/types/core_flows.UpdateRequestItemReturnValidationStepInput/page.mdx": "2025-06-25T10:11:34.024Z",
"references/core_flows/types/core_flows.UpdateReturnShippingMethodValidationStepInput/page.mdx": "2025-06-25T10:11:34.036Z", "references/core_flows/types/core_flows.UpdateReturnShippingMethodValidationStepInput/page.mdx": "2025-06-25T10:11:34.036Z",
"references/core_flows/types/core_flows.UpdateReturnValidationStepInput/page.mdx": "2025-06-25T10:11:34.046Z", "references/core_flows/types/core_flows.UpdateReturnValidationStepInput/page.mdx": "2025-06-25T10:11:34.046Z",
"app/examples/guides/quote-management/page.mdx": "2025-05-20T07:51:40.713Z", "app/examples/guides/quote-management/page.mdx": "2025-06-26T12:37:46.148Z",
"references/cart/interfaces/cart.CartCreditLineDTO/page.mdx": "2025-03-04T13:33:48.207Z", "references/cart/interfaces/cart.CartCreditLineDTO/page.mdx": "2025-03-04T13:33:48.207Z",
"references/cart/interfaces/cart.UpdateLineItemWithoutSelectorDTO/page.mdx": "2025-06-25T10:11:35.041Z", "references/cart/interfaces/cart.UpdateLineItemWithoutSelectorDTO/page.mdx": "2025-06-25T10:11:35.041Z",
"references/cart_models/variables/cart_models.CreditLine/page.mdx": "2025-06-25T10:11:44.745Z", "references/cart_models/variables/cart_models.CreditLine/page.mdx": "2025-06-25T10:11:44.745Z",
@@ -6037,7 +6037,7 @@ export const generatedEditDates = {
"app/nextjs-starter/guides/revalidate-cache/page.mdx": "2025-05-01T15:33:42.490Z", "app/nextjs-starter/guides/revalidate-cache/page.mdx": "2025-05-01T15:33:42.490Z",
"app/storefront-development/cart/totals/page.mdx": "2025-03-27T14:47:14.252Z", "app/storefront-development/cart/totals/page.mdx": "2025-03-27T14:47:14.252Z",
"app/storefront-development/checkout/order-confirmation/page.mdx": "2025-03-27T14:29:45.669Z", "app/storefront-development/checkout/order-confirmation/page.mdx": "2025-03-27T14:29:45.669Z",
"app/how-to-tutorials/tutorials/product-reviews/page.mdx": "2025-05-20T07:51:40.713Z", "app/how-to-tutorials/tutorials/product-reviews/page.mdx": "2025-06-26T12:34:50.976Z",
"app/troubleshooting/data-models/default-fields/page.mdx": "2025-03-21T06:59:06.775Z", "app/troubleshooting/data-models/default-fields/page.mdx": "2025-03-21T06:59:06.775Z",
"app/troubleshooting/medusa-admin/blocked-request/page.mdx": "2025-03-21T06:53:34.854Z", "app/troubleshooting/medusa-admin/blocked-request/page.mdx": "2025-03-21T06:53:34.854Z",
"app/troubleshooting/nextjs-starter-rewrites/page.mdx": "2025-03-21T07:09:08.901Z", "app/troubleshooting/nextjs-starter-rewrites/page.mdx": "2025-03-21T07:09:08.901Z",
@@ -6047,11 +6047,11 @@ export const generatedEditDates = {
"app/troubleshooting/storefront-pak-sc/page.mdx": "2025-03-21T07:08:57.546Z", "app/troubleshooting/storefront-pak-sc/page.mdx": "2025-03-21T07:08:57.546Z",
"app/troubleshooting/workflow-errors/step-x-defined/page.mdx": "2025-03-21T07:09:02.741Z", "app/troubleshooting/workflow-errors/step-x-defined/page.mdx": "2025-03-21T07:09:02.741Z",
"app/troubleshooting/workflow-errors/when-then/page.mdx": "2025-03-21T08:35:45.145Z", "app/troubleshooting/workflow-errors/when-then/page.mdx": "2025-03-21T08:35:45.145Z",
"app/how-to-tutorials/tutorials/abandoned-cart/page.mdx": "2025-05-20T07:51:40.713Z", "app/how-to-tutorials/tutorials/abandoned-cart/page.mdx": "2025-06-26T11:45:57.112Z",
"app/integrations/guides/algolia/page.mdx": "2025-06-16T09:29:42.556Z", "app/integrations/guides/algolia/page.mdx": "2025-06-26T12:33:36.673Z",
"app/integrations/guides/magento/page.mdx": "2025-05-20T07:51:40.716Z", "app/integrations/guides/magento/page.mdx": "2025-05-20T07:51:40.716Z",
"app/js-sdk/auth/overview/page.mdx": "2025-03-28T08:05:32.622Z", "app/js-sdk/auth/overview/page.mdx": "2025-03-28T08:05:32.622Z",
"app/how-to-tutorials/tutorials/loyalty-points/page.mdx": "2025-06-24T08:50:10.114Z", "app/how-to-tutorials/tutorials/loyalty-points/page.mdx": "2025-06-26T11:58:07.874Z",
"references/js_sdk/admin/Admin/properties/js_sdk.admin.Admin.plugin/page.mdx": "2025-04-11T09:04:55.084Z", "references/js_sdk/admin/Admin/properties/js_sdk.admin.Admin.plugin/page.mdx": "2025-04-11T09:04:55.084Z",
"references/js_sdk/admin/Customer/methods/js_sdk.admin.Customer.createAddress/page.mdx": "2025-05-20T07:51:40.936Z", "references/js_sdk/admin/Customer/methods/js_sdk.admin.Customer.createAddress/page.mdx": "2025-05-20T07:51:40.936Z",
"references/js_sdk/admin/Customer/methods/js_sdk.admin.Customer.deleteAddress/page.mdx": "2025-04-11T09:04:54.015Z", "references/js_sdk/admin/Customer/methods/js_sdk.admin.Customer.deleteAddress/page.mdx": "2025-04-11T09:04:54.015Z",
@@ -6197,7 +6197,7 @@ export const generatedEditDates = {
"references/core_flows/interfaces/core_flows.ValidateDraftOrderStepInput/page.mdx": "2025-06-25T10:11:32.719Z", "references/core_flows/interfaces/core_flows.ValidateDraftOrderStepInput/page.mdx": "2025-06-25T10:11:32.719Z",
"app/commerce-modules/product/guides/variant-inventory/page.mdx": "2025-04-25T14:22:42.329Z", "app/commerce-modules/product/guides/variant-inventory/page.mdx": "2025-04-25T14:22:42.329Z",
"app/troubleshooting/validation-error/page.mdx": "2025-04-25T14:14:57.568Z", "app/troubleshooting/validation-error/page.mdx": "2025-04-25T14:14:57.568Z",
"app/integrations/guides/contentful/page.mdx": "2025-05-20T07:51:40.715Z", "app/integrations/guides/contentful/page.mdx": "2025-06-26T11:55:43.353Z",
"references/modules/events/page.mdx": "2025-06-05T19:05:53.162Z", "references/modules/events/page.mdx": "2025-06-05T19:05:53.162Z",
"references/module_events/module_events.Auth/page.mdx": "2025-05-20T07:51:40.956Z", "references/module_events/module_events.Auth/page.mdx": "2025-05-20T07:51:40.956Z",
"references/module_events/module_events.Cart/page.mdx": "2025-05-20T07:51:40.956Z", "references/module_events/module_events.Cart/page.mdx": "2025-05-20T07:51:40.956Z",
@@ -6482,7 +6482,7 @@ export const generatedEditDates = {
"references/types/interfaces/types.WebhookActionResult/page.mdx": "2025-05-20T07:51:41.086Z", "references/types/interfaces/types.WebhookActionResult/page.mdx": "2025-05-20T07:51:41.086Z",
"references/types/interfaces/types.WebhookActionData/page.mdx": "2025-05-20T07:51:41.086Z", "references/types/interfaces/types.WebhookActionData/page.mdx": "2025-05-20T07:51:41.086Z",
"app/commerce-modules/tax/tax-provider/page.mdx": "2025-05-20T07:51:40.711Z", "app/commerce-modules/tax/tax-provider/page.mdx": "2025-05-20T07:51:40.711Z",
"app/recipes/bundled-products/examples/standard/page.mdx": "2025-06-23T15:54:25.807Z", "app/recipes/bundled-products/examples/standard/page.mdx": "2025-06-26T11:52:18.819Z",
"app/recipes/bundled-products/page.mdx": "2025-05-20T07:51:40.718Z", "app/recipes/bundled-products/page.mdx": "2025-05-20T07:51:40.718Z",
"app/infrastructure-modules/analytics/local/page.mdx": "2025-05-29T07:08:55.749Z", "app/infrastructure-modules/analytics/local/page.mdx": "2025-05-29T07:08:55.749Z",
"app/infrastructure-modules/analytics/page.mdx": "2025-05-26T14:48:25.803Z", "app/infrastructure-modules/analytics/page.mdx": "2025-05-26T14:48:25.803Z",
@@ -6526,7 +6526,7 @@ export const generatedEditDates = {
"references/events/Payment/variables/events.Payment.PaymentEvents/page.mdx": "2025-05-28T13:06:45.060Z", "references/events/Payment/variables/events.Payment.PaymentEvents/page.mdx": "2025-05-28T13:06:45.060Z",
"references/events/events.Payment/page.mdx": "2025-05-28T13:06:45.059Z", "references/events/events.Payment/page.mdx": "2025-05-28T13:06:45.059Z",
"references/module_events/module_events.Payment/page.mdx": "2025-06-05T19:05:53.217Z", "references/module_events/module_events.Payment/page.mdx": "2025-06-05T19:05:53.217Z",
"app/integrations/guides/segment/page.mdx": "2025-05-26T14:46:22.757Z", "app/integrations/guides/segment/page.mdx": "2025-06-26T12:56:50.931Z",
"references/core_flows/Draft_Order/Steps_Draft_Order/functions/core_flows.Draft_Order.Steps_Draft_Order.deleteDraftOrdersStep/page.mdx": "2025-06-05T19:05:37.066Z", "references/core_flows/Draft_Order/Steps_Draft_Order/functions/core_flows.Draft_Order.Steps_Draft_Order.deleteDraftOrdersStep/page.mdx": "2025-06-05T19:05:37.066Z",
"references/core_flows/Draft_Order/Steps_Draft_Order/variables/core_flows.Draft_Order.Steps_Draft_Order.deleteDraftOrdersStepId/page.mdx": "2025-06-05T19:05:37.064Z", "references/core_flows/Draft_Order/Steps_Draft_Order/variables/core_flows.Draft_Order.Steps_Draft_Order.deleteDraftOrdersStepId/page.mdx": "2025-06-05T19:05:37.064Z",
"references/core_flows/Draft_Order/Workflows_Draft_Order/functions/core_flows.Draft_Order.Workflows_Draft_Order.deleteDraftOrdersWorkflow/page.mdx": "2025-06-25T10:11:28.944Z", "references/core_flows/Draft_Order/Workflows_Draft_Order/functions/core_flows.Draft_Order.Workflows_Draft_Order.deleteDraftOrdersWorkflow/page.mdx": "2025-06-25T10:11:28.944Z",
@@ -6544,14 +6544,15 @@ export const generatedEditDates = {
"references/utils/Payment/variables/utils.Payment.PaymentEvents/page.mdx": "2025-06-05T19:05:53.491Z", "references/utils/Payment/variables/utils.Payment.PaymentEvents/page.mdx": "2025-06-05T19:05:53.491Z",
"references/utils/types/utils.NormalizedRow/page.mdx": "2025-06-05T19:05:53.365Z", "references/utils/types/utils.NormalizedRow/page.mdx": "2025-06-05T19:05:53.365Z",
"references/utils/utils.Payment/page.mdx": "2025-06-05T19:05:53.489Z", "references/utils/utils.Payment/page.mdx": "2025-06-05T19:05:53.489Z",
"app/integrations/guides/slack/page.mdx": "2025-06-03T09:37:42.528Z", "app/integrations/guides/slack/page.mdx": "2025-06-26T12:57:20.880Z",
"app/integrations/guides/sentry/page.mdx": "2025-06-16T10:11:29.955Z", "app/integrations/guides/sentry/page.mdx": "2025-06-16T10:11:29.955Z",
"app/integrations/guides/mailchimp/page.mdx": "2025-06-24T08:08:35.034Z", "app/integrations/guides/mailchimp/page.mdx": "2025-06-26T11:59:15.303Z",
"app/how-to-tutorials/tutorials/first-purchase-discounts/page.mdx": "2025-06-25T10:44:38.113Z", "app/how-to-tutorials/tutorials/first-purchase-discounts/page.mdx": "2025-06-26T11:55:27.175Z",
"references/types/CommonTypes/interfaces/types.CommonTypes.CookieOptions/page.mdx": "2025-06-25T10:11:37.088Z", "references/types/CommonTypes/interfaces/types.CommonTypes.CookieOptions/page.mdx": "2025-06-25T10:11:37.088Z",
"references/types/types/types.RemoteQueryFilterOperators/page.mdx": "2025-06-25T10:11:39.849Z", "references/types/types/types.RemoteQueryFilterOperators/page.mdx": "2025-06-25T10:11:39.849Z",
"references/types/ModulesSdkTypes/types/types.ModulesSdkTypes.InternalRemoteQueryFilters/page.mdx": "2025-06-25T10:11:39.832Z", "references/types/ModulesSdkTypes/types/types.ModulesSdkTypes.InternalRemoteQueryFilters/page.mdx": "2025-06-25T10:11:39.832Z",
"references/workflows/IDistributedTransactionStorage/methods/workflows.IDistributedTransactionStorage.clearExpiredExecutions/page.mdx": "2025-06-25T10:11:44.945Z", "references/workflows/IDistributedTransactionStorage/methods/workflows.IDistributedTransactionStorage.clearExpiredExecutions/page.mdx": "2025-06-25T10:11:44.945Z",
"references/types/interfaces/types.InitiatePaymentOutput/page.mdx": "2025-06-25T10:11:39.942Z", "references/types/interfaces/types.InitiatePaymentOutput/page.mdx": "2025-06-25T10:11:39.942Z",
"references/types/interfaces/types.UpdatePaymentOutput/page.mdx": "2025-06-25T10:11:39.945Z" "references/types/interfaces/types.UpdatePaymentOutput/page.mdx": "2025-06-25T10:11:39.945Z",
"app/how-to-tutorials/tutorials/re-order/page.mdx": "2025-06-26T12:38:24.308Z"
} }
@@ -1079,6 +1079,14 @@ const generatedgeneratedCommerceModulesSidebarSidebar = {
"sort_sidebar": "alphabetize", "sort_sidebar": "alphabetize",
"description": "Learn how to use the Cart Module in your customizations on the Medusa application server.", "description": "Learn how to use the Cart Module in your customizations on the Medusa application server.",
"children": [ "children": [
{
"loaded": true,
"isPathHref": true,
"type": "ref",
"title": "Add Gift Message",
"path": "https://docs.medusajs.com/resources/how-to-tutorials/tutorials/gift-message",
"children": []
},
{ {
"loaded": true, "loaded": true,
"isPathHref": true, "isPathHref": true,
@@ -803,6 +803,14 @@ const generatedgeneratedToolsSidebarSidebar = {
"autogenerate_as_ref": true, "autogenerate_as_ref": true,
"sort_sidebar": "alphabetize", "sort_sidebar": "alphabetize",
"children": [ "children": [
{
"loaded": true,
"isPathHref": true,
"type": "ref",
"title": "Add Gift Message",
"path": "https://docs.medusajs.com/resources/how-to-tutorials/tutorials/gift-message",
"children": []
},
{ {
"loaded": true, "loaded": true,
"isPathHref": true, "isPathHref": true,