@vite-hub/workflow
v0.0.1
Published
Workflow primitives and Vite integration for ViteHub.
Downloads
292
Maintainers
Readme
@vite-hub/workflow
@vite-hub/workflow defines long-running work once and starts it through one runWorkflow() API.
Install
pnpm add @vite-hub/workflowAdd the provider dependency for the workflow provider you configure.
Minimal API
// server/workflows/welcome.ts
import { defineWorkflow } from "@vite-hub/workflow"
export default defineWorkflow<{ email: string }>(async ({ id, payload, step }) => {
const email = await step?.do?.("send-email", {}, async () => {
return { sentTo: payload.email }
})
return { id, email }
})// server/api/welcome.post.ts
import { getWorkflowRun, runWorkflow } from "@vite-hub/workflow"
import { defineEventHandler, readBody } from "h3"
export default defineEventHandler(async (event) => {
const run = await runWorkflow("welcome", await readBody<{ email: string }>(event))
return getWorkflowRun("welcome", run.id)
})// nitro.config.ts
import { defineNitroConfig } from "nitro/config"
export default defineNitroConfig({
modules: ["@vite-hub/workflow/nitro"],
workflow: { provider: "openworkflow" },
})Vite and Nitro
Nitro discovers server/workflows/<name>.ts and folder workflows such as server/workflows/welcome/index.ts with numbered step files. Vite also supports src/<name>.workflow.ts through hubWorkflow().
Providers map to OpenWorkflow, Cloudflare Workflows, or Vercel Workflow.
Learn more at vitehub.dev.
