diff --git a/package.json b/package.json index 95580a9..647817a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@xtr-dev/payload-mailing", - "version": "0.3.0", + "version": "0.3.1", "description": "Template-based email system with scheduling and job processing for PayloadCMS", "type": "module", "main": "dist/index.js", diff --git a/src/jobs/index.ts b/src/jobs/index.ts index 3876ae7..348cb0d 100644 --- a/src/jobs/index.ts +++ b/src/jobs/index.ts @@ -1,4 +1,4 @@ -import { processEmailsJob } from './processEmailsJob.js' +import { processEmailsJob } from './processEmailsTask.js' import { sendEmailJob } from './sendEmailTask.js' /** @@ -10,5 +10,5 @@ export const mailingJobs = [ ] // Re-export everything from individual job files -export * from './processEmailsJob.js' +export * from './processEmailsTask.js' export * from './sendEmailTask.js' diff --git a/src/jobs/processEmailsJob.ts b/src/jobs/processEmailsTask.ts similarity index 78% rename from src/jobs/processEmailsJob.ts rename to src/jobs/processEmailsTask.ts index aeef18b..14de41f 100644 --- a/src/jobs/processEmailsJob.ts +++ b/src/jobs/processEmailsTask.ts @@ -2,18 +2,18 @@ import type { PayloadRequest, Payload } from 'payload' import type { MailingService } from '../services/MailingService.js' /** - * Data passed to the process emails job + * Data passed to the process emails task */ -export interface ProcessEmailsJobData { +export interface ProcessEmailsTaskData { // Currently no data needed - always processes both pending and failed emails } /** * Handler function for processing emails - * Used internally by the job definition + * Used internally by the task definition */ -export const processEmailsJobHandler = async ( - job: { data: ProcessEmailsJobData }, +export const processEmailsTaskHandler = async ( + job: { data: ProcessEmailsTaskData }, context: { req: PayloadRequest; mailingService: MailingService } ) => { const { mailingService } = context @@ -35,10 +35,10 @@ export const processEmailsJobHandler = async ( } /** - * Job definition for processing emails + * Task definition for processing emails * This is what gets registered with Payload's job system */ -export const processEmailsJob = { +export const processEmailsTask = { slug: 'process-emails', handler: async ({ job, req }: { job: any; req: any }) => { // Get mailing context from payload @@ -50,8 +50,8 @@ export const processEmailsJob = { } // Use the existing mailing service from context - await processEmailsJobHandler( - job as { data: ProcessEmailsJobData }, + await processEmailsTaskHandler( + job as { data: ProcessEmailsTaskData }, { req, mailingService: mailingContext.service } ) @@ -62,9 +62,12 @@ export const processEmailsJob = { } } }, - interfaceName: 'ProcessEmailsJob', + interfaceName: 'ProcessEmailsTask', } +// For backward compatibility, export as processEmailsJob +export const processEmailsJob = processEmailsTask + /** * Helper function to schedule an email processing job * Used by the plugin during initialization and can be used by developers @@ -82,7 +85,7 @@ export const scheduleEmailsJob = async ( try { await payload.jobs.queue({ queue: queueName, - workflow: 'process-emails', + task: 'process-emails', input: {}, waitUntil: delay ? new Date(Date.now() + delay) : undefined, } as any) diff --git a/src/workflows/sendEmailWorkflow.ts b/src/workflows/sendEmailWorkflow.ts index 98697f0..3e3c565 100644 --- a/src/workflows/sendEmailWorkflow.ts +++ b/src/workflows/sendEmailWorkflow.ts @@ -280,11 +280,7 @@ export const sendEmailWorkflow = { } if (error instanceof Error) { - // Preserve original error and stack trace - const wrappedError = new Error(`Failed to process email: ${error.message}`) - wrappedError.stack = error.stack - wrappedError.cause = error - throw wrappedError + throw new Error(`Failed to process email: ${error.message}`, { cause: error }) } else { throw new Error(`Failed to process email: ${String(error)}`) }