www/apps/resources/app/lint/rules/no-duplicate-step-id-in-workflow/page.mdx
export const metadata = {
title: no-duplicate-step-id-in-workflow - ESLint plugin rules,
}
This rule disallows invoking the same step more than once in a createWorkflow constructor without renaming the subsequent calls with .config({ name }).
error. This rule is enabled in the recommended preset.
This rule targets files in your project's src/workflows directory. It reports a step invoked more than once in a workflow's constructor when the duplicates aren't renamed.
The following code is reported by the rule:
import {
createWorkflow,
WorkflowResponse,
} from "@medusajs/framework/workflows-sdk"
createWorkflow("hello", () => {
const products = useQueryGraphStep({
// ...
})
const customers = useQueryGraphStep({
// ...
})
return new WorkflowResponse({ products, customers })
})
Instead, rename the subsequent calls with .config({ name }):
import {
createWorkflow,
WorkflowResponse,
} from "@medusajs/framework/workflows-sdk"
createWorkflow("hello", () => {
const products = useQueryGraphStep({
// ...
})
const customers = useQueryGraphStep({
// ...
}).config({
name: "fetch-customers",
})
return new WorkflowResponse({ products, customers })
})
Steps registered with the same ID throw an error at runtime. Giving each step a unique ID ensures the workflow runs correctly.
Learn more in the Multiple Step Usages in Workflows documentation.
This rule is auto-fixable. Run the linter with the --fix option to apply the fix automatically.