Fix JSON circular reference serialization and use PayloadCMS generated types

- Replace duplicate type definitions with PayloadCMS generated types
- Fix workflow context serialization with safeSerialize() method
- Resolve type mismatches (id: string vs number)
- Update all imports to use PayloadWorkflow type
- Ensure workflow runs are created successfully without serialization errors

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-09-01 18:02:21 +02:00
parent 964b11c0c9
commit 6397250045
13 changed files with 477 additions and 75 deletions

View File

@@ -2,7 +2,7 @@ import type {Config, Payload, TaskConfig} from 'payload'
import cron from 'node-cron'
import {type Workflow, WorkflowExecutor} from '../core/workflow-executor.js'
import {type PayloadWorkflow, WorkflowExecutor} from '../core/workflow-executor.js'
import {getConfigLogger} from './logger.js'
/**
@@ -101,7 +101,7 @@ export function generateCronTasks(config: Config): void {
}
// Execute the workflow
await executor.execute(workflow as Workflow, context, req)
await executor.execute(workflow as PayloadWorkflow, context, req)
// Re-queue the job for the next scheduled execution if cronExpression is provided
if (cronExpression) {

View File

@@ -1,7 +1,7 @@
import type { Payload, PayloadRequest } from "payload"
import type { Logger } from "pino"
import type { WorkflowExecutor, Workflow } from "../core/workflow-executor.js"
import type { WorkflowExecutor, PayloadWorkflow } from "../core/workflow-executor.js"
export function initGlobalHooks(payload: Payload, logger: Payload['logger'], executor: WorkflowExecutor) {
// Get all globals from the config
@@ -100,7 +100,7 @@ async function executeTriggeredGlobalWorkflows(
}
// Execute the workflow
await executor.execute(workflow as Workflow, context, req)
await executor.execute(workflow as PayloadWorkflow, context, req)
}
} catch (error) {
logger.error({

View File

@@ -1,6 +1,6 @@
import type {Config, PayloadRequest} from 'payload'
import {type Workflow, WorkflowExecutor} from '../core/workflow-executor.js'
import {type PayloadWorkflow, WorkflowExecutor} from '../core/workflow-executor.js'
import {getConfigLogger, initializeLogger} from './logger.js'
export function initWebhookEndpoint(config: Config, webhookPrefix = 'webhook'): void {
@@ -110,7 +110,7 @@ export function initWebhookEndpoint(config: Config, webhookPrefix = 'webhook'):
}
// Execute the workflow
await executor.execute(workflow as Workflow, context, req)
await executor.execute(workflow as PayloadWorkflow, context, req)
return { status: 'triggered', workflowId: workflow.id }
} catch (error) {