@xtr-dev/payload-automation 0.0.31 → 0.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/plugin/index.js +25 -5
- package/dist/plugin/index.js.map +1 -1
- package/package.json +1 -1
package/dist/plugin/index.js
CHANGED
|
@@ -147,17 +147,37 @@ export const workflowsPlugin = (pluginOptions)=>(config)=>{
|
|
|
147
147
|
operation: args?.operation
|
|
148
148
|
}, 'Collection automation hook triggered');
|
|
149
149
|
if (!registry.isInitialized) {
|
|
150
|
-
logger.warn('Workflow executor not yet initialized,
|
|
151
|
-
|
|
150
|
+
logger.warn('Workflow executor not yet initialized, attempting lazy initialization');
|
|
151
|
+
try {
|
|
152
|
+
// Try to create executor if we have a payload instance
|
|
153
|
+
if (args.req?.payload) {
|
|
154
|
+
logger.info('Creating workflow executor via lazy initialization');
|
|
155
|
+
const { WorkflowExecutor } = await import('../core/workflow-executor.js');
|
|
156
|
+
const executor = new WorkflowExecutor(args.req.payload, logger);
|
|
157
|
+
setWorkflowExecutor(executor, logger);
|
|
158
|
+
logger.info('Lazy initialization successful');
|
|
159
|
+
} else {
|
|
160
|
+
logger.error('Cannot lazy initialize - no payload instance available');
|
|
161
|
+
await createFailedWorkflowRun(args, 'Workflow executor not initialized and lazy initialization failed - no payload instance', logger);
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
} catch (error) {
|
|
165
|
+
logger.error('Lazy initialization failed:', error);
|
|
166
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
167
|
+
await createFailedWorkflowRun(args, `Workflow executor lazy initialization failed: ${errorMessage}`, logger);
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
152
170
|
}
|
|
153
|
-
|
|
171
|
+
// Re-check registry after potential lazy initialization
|
|
172
|
+
const updatedRegistry = getExecutorRegistry();
|
|
173
|
+
if (!updatedRegistry.executor) {
|
|
154
174
|
logger.error('Workflow executor is null despite being marked as initialized');
|
|
155
175
|
// Create a failed workflow run to track this issue
|
|
156
|
-
await createFailedWorkflowRun(args, 'Executor not available', logger);
|
|
176
|
+
await createFailedWorkflowRun(args, 'Executor not available after initialization', logger);
|
|
157
177
|
return undefined;
|
|
158
178
|
}
|
|
159
179
|
logger.debug('Executing triggered workflows...');
|
|
160
|
-
await
|
|
180
|
+
await updatedRegistry.executor.executeTriggeredWorkflows(args.collection.slug, args.operation, args.doc, args.previousDoc, args.req);
|
|
161
181
|
logger.info({
|
|
162
182
|
collection: args?.collection?.slug,
|
|
163
183
|
docId: args?.doc?.id,
|
package/dist/plugin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugin/index.ts"],"sourcesContent":["import type {Config} from 'payload'\n\nimport type {CollectionTriggerConfigCrud, WorkflowsPluginConfig} from \"./config-types.js\"\n\nimport {createWorkflowCollection} from '../collections/Workflow.js'\nimport {WorkflowRunsCollection} from '../collections/WorkflowRuns.js'\nimport {WorkflowExecutor} from '../core/workflow-executor.js'\nimport {generateCronTasks, registerCronJobs} from './cron-scheduler.js'\nimport {initCollectionHooks} from \"./init-collection-hooks.js\"\nimport {initGlobalHooks} from \"./init-global-hooks.js\"\nimport {initStepTasks} from \"./init-step-tasks.js\"\nimport {initWebhookEndpoint} from \"./init-webhook.js\"\nimport {initWorkflowHooks} from './init-workflow-hooks.js'\nimport {getConfigLogger, initializeLogger} from './logger.js'\n\nexport {getLogger} from './logger.js'\n\n// Improved executor registry with proper error handling and logging\ninterface ExecutorRegistry {\n executor: null | WorkflowExecutor\n isInitialized: boolean\n logger: any | null\n}\n\nconst executorRegistry: ExecutorRegistry = {\n executor: null,\n isInitialized: false,\n logger: null\n}\n\nconst setWorkflowExecutor = (executor: WorkflowExecutor, logger: any) => {\n executorRegistry.executor = executor\n executorRegistry.logger = logger\n executorRegistry.isInitialized = true\n\n logger.info('Workflow executor initialized and registered successfully')\n}\n\nconst getExecutorRegistry = (): ExecutorRegistry => {\n return executorRegistry\n}\n\n// Helper function to create failed workflow runs for tracking errors\nconst createFailedWorkflowRun = async (args: any, errorMessage: string, logger: any) => {\n try {\n // Only create failed workflow runs if we have enough context\n if (!args?.req?.payload || !args?.collection?.slug) {\n return\n }\n\n // Find workflows that should have been triggered\n const workflows = await args.req.payload.find({\n collection: 'workflows',\n limit: 10,\n req: args.req,\n where: {\n 'triggers.collectionSlug': {\n equals: args.collection.slug\n },\n 'triggers.operation': {\n equals: args.operation\n },\n 'triggers.type': {\n equals: 'collection-trigger'\n }\n }\n })\n\n // Create failed workflow runs for each matching workflow\n for (const workflow of workflows.docs) {\n await args.req.payload.create({\n collection: 'workflow-runs',\n data: {\n completedAt: new Date().toISOString(),\n context: {\n steps: {},\n trigger: {\n type: 'collection',\n collection: args.collection.slug,\n doc: args.doc,\n operation: args.operation,\n previousDoc: args.previousDoc,\n triggeredAt: new Date().toISOString()\n }\n },\n error: `Hook execution failed: ${errorMessage}`,\n inputs: {},\n logs: [{\n level: 'error',\n message: `Hook execution failed: ${errorMessage}`,\n timestamp: new Date().toISOString()\n }],\n outputs: {},\n startedAt: new Date().toISOString(),\n status: 'failed',\n steps: [],\n triggeredBy: args?.req?.user?.email || 'system',\n workflow: workflow.id,\n workflowVersion: 1\n },\n req: args.req\n })\n }\n\n if (workflows.docs.length > 0) {\n logger.info({\n errorMessage,\n workflowCount: workflows.docs.length\n }, 'Created failed workflow runs for hook execution error')\n }\n\n } catch (error) {\n // Don't let workflow run creation failures break the original operation\n logger.warn({\n error: error instanceof Error ? error.message : 'Unknown error'\n }, 'Failed to create failed workflow run record')\n }\n}\n\nconst applyCollectionsConfig = <T extends string>(pluginOptions: WorkflowsPluginConfig<T>, config: Config) => {\n // Add workflow collections\n if (!config.collections) {\n config.collections = []\n }\n\n config.collections.push(\n createWorkflowCollection(pluginOptions),\n WorkflowRunsCollection\n )\n}\n\n// Removed config-phase hook registration - user collections don't exist during config phase\n\n\nexport const workflowsPlugin =\n <TSlug extends string>(pluginOptions: WorkflowsPluginConfig<TSlug>) =>\n (config: Config): Config => {\n // If the plugin is disabled, return config unchanged\n if (pluginOptions.enabled === false) {\n return config\n }\n\n applyCollectionsConfig<TSlug>(pluginOptions, config)\n\n // CRITICAL: Modify existing collection configs BEFORE PayloadCMS processes them\n // This is the ONLY time we can add hooks that will actually work\n const logger = getConfigLogger()\n logger.info('Attempting to modify collection configs before PayloadCMS initialization...')\n\n if (config.collections && pluginOptions.collectionTriggers) {\n for (const [triggerSlug, triggerConfig] of Object.entries(pluginOptions.collectionTriggers)) {\n if (!triggerConfig) {continue}\n\n // Find the collection config that matches\n const collectionIndex = config.collections.findIndex(c => c.slug === triggerSlug)\n if (collectionIndex === -1) {\n logger.warn(`Collection '${triggerSlug}' not found in config.collections`)\n continue\n }\n\n const collection = config.collections[collectionIndex]\n logger.info(`Found collection '${triggerSlug}' - modifying its hooks...`)\n\n // Initialize hooks if needed\n if (!collection.hooks) {\n collection.hooks = {}\n }\n if (!collection.hooks.afterChange) {\n collection.hooks.afterChange = []\n }\n\n // Create a reliable hook function with proper dependency injection\n const automationHook = Object.assign(\n async function payloadAutomationHook(args: any) {\n const registry = getExecutorRegistry()\n\n // Use proper logger if available, fallback to args.req.payload.logger\n const logger = registry.logger || args?.req?.payload?.logger || console\n\n try {\n logger.info({\n collection: args?.collection?.slug,\n docId: args?.doc?.id,\n hookType: 'automation',\n operation: args?.operation\n }, 'Collection automation hook triggered')\n\n if (!registry.isInitialized) {\n logger.warn('Workflow executor not yet initialized, skipping execution')\n return undefined\n }\n\n if (!registry.executor) {\n logger.error('Workflow executor is null despite being marked as initialized')\n // Create a failed workflow run to track this issue\n await createFailedWorkflowRun(args, 'Executor not available', logger)\n return undefined\n }\n\n logger.debug('Executing triggered workflows...')\n await registry.executor.executeTriggeredWorkflows(\n args.collection.slug,\n args.operation,\n args.doc,\n args.previousDoc,\n args.req\n )\n\n logger.info({\n collection: args?.collection?.slug,\n docId: args?.doc?.id,\n operation: args?.operation\n }, 'Workflow execution completed successfully')\n\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n\n logger.error({\n collection: args?.collection?.slug,\n docId: args?.doc?.id,\n error: errorMessage,\n errorStack: error instanceof Error ? error.stack : undefined,\n operation: args?.operation\n }, 'Hook execution failed')\n\n // Create a failed workflow run to track this error\n try {\n await createFailedWorkflowRun(args, errorMessage, logger)\n } catch (createError) {\n logger.error({\n error: createError instanceof Error ? createError.message : 'Unknown error'\n }, 'Failed to create workflow run for hook error')\n }\n\n // Don't throw to prevent breaking the original operation\n }\n\n return undefined\n },\n {\n __isAutomationHook: true,\n __version: '0.0.22'\n }\n )\n\n // Add the hook to the collection config\n collection.hooks.afterChange.push(automationHook)\n logger.info(`Added automation hook to '${triggerSlug}' - hook count: ${collection.hooks.afterChange.length}`)\n }\n }\n\n if (!config.jobs) {\n config.jobs = {tasks: []}\n }\n\n const configLogger = getConfigLogger()\n configLogger.info(`Configuring workflow plugin with ${Object.keys(pluginOptions.collectionTriggers || {}).length} collection triggers`)\n\n // Generate cron tasks for workflows with cron triggers\n generateCronTasks(config)\n\n for (const step of pluginOptions.steps) {\n if (!config.jobs?.tasks?.find(task => task.slug === step.slug)) {\n configLogger.debug(`Registering task: ${step.slug}`)\n config.jobs?.tasks?.push(step)\n } else {\n configLogger.debug(`Task ${step.slug} already registered, skipping`)\n }\n }\n\n // Initialize webhook endpoint\n initWebhookEndpoint(config, pluginOptions.webhookPrefix || 'webhook')\n\n // Set up onInit to register collection hooks and initialize features\n const incomingOnInit = config.onInit\n config.onInit = async (payload) => {\n configLogger.info(`onInit called - collections: ${Object.keys(payload.collections).length}`)\n\n // Execute any existing onInit functions first\n if (incomingOnInit) {\n configLogger.debug('Executing existing onInit function')\n await incomingOnInit(payload)\n }\n\n // Initialize the logger with the payload instance\n const logger = initializeLogger(payload)\n logger.info('Logger initialized with payload instance')\n\n // Log collection trigger configuration\n logger.info(`Plugin configuration: ${Object.keys(pluginOptions.collectionTriggers || {}).length} collection triggers, ${pluginOptions.steps?.length || 0} steps`)\n\n // Create workflow executor instance\n console.log('🚨 CREATING WORKFLOW EXECUTOR INSTANCE')\n const executor = new WorkflowExecutor(payload, logger)\n console.log('🚨 EXECUTOR CREATED:', typeof executor)\n console.log('🚨 EXECUTOR METHODS:', Object.getOwnPropertyNames(Object.getPrototypeOf(executor)))\n\n // Register executor with proper dependency injection\n setWorkflowExecutor(executor, logger)\n\n // Hooks are now registered during config phase - just log status\n logger.info('Hooks were registered during config phase - executor now available')\n\n logger.info('Initializing global hooks...')\n initGlobalHooks(payload, logger, executor)\n\n logger.info('Initializing workflow hooks...')\n initWorkflowHooks(payload, logger)\n\n logger.info('Initializing step tasks...')\n initStepTasks(pluginOptions, payload, logger)\n\n // Register cron jobs for workflows with cron triggers\n logger.info('Registering cron jobs...')\n await registerCronJobs(payload, logger)\n\n logger.info('Plugin initialized successfully - all hooks registered')\n }\n\n return config\n }\n"],"names":["createWorkflowCollection","WorkflowRunsCollection","WorkflowExecutor","generateCronTasks","registerCronJobs","initGlobalHooks","initStepTasks","initWebhookEndpoint","initWorkflowHooks","getConfigLogger","initializeLogger","getLogger","executorRegistry","executor","isInitialized","logger","setWorkflowExecutor","info","getExecutorRegistry","createFailedWorkflowRun","args","errorMessage","req","payload","collection","slug","workflows","find","limit","where","equals","operation","workflow","docs","create","data","completedAt","Date","toISOString","context","steps","trigger","type","doc","previousDoc","triggeredAt","error","inputs","logs","level","message","timestamp","outputs","startedAt","status","triggeredBy","user","email","id","workflowVersion","length","workflowCount","warn","Error","applyCollectionsConfig","pluginOptions","config","collections","push","workflowsPlugin","enabled","collectionTriggers","triggerSlug","triggerConfig","Object","entries","collectionIndex","findIndex","c","hooks","afterChange","automationHook","assign","payloadAutomationHook","registry","console","docId","hookType","undefined","debug","executeTriggeredWorkflows","errorStack","stack","createError","__isAutomationHook","__version","jobs","tasks","configLogger","keys","step","task","webhookPrefix","incomingOnInit","onInit","log","getOwnPropertyNames","getPrototypeOf"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/plugin/index.ts"],"sourcesContent":["import type {Config} from 'payload'\n\nimport type {CollectionTriggerConfigCrud, WorkflowsPluginConfig} from \"./config-types.js\"\n\nimport {createWorkflowCollection} from '../collections/Workflow.js'\nimport {WorkflowRunsCollection} from '../collections/WorkflowRuns.js'\nimport {WorkflowExecutor} from '../core/workflow-executor.js'\nimport {generateCronTasks, registerCronJobs} from './cron-scheduler.js'\nimport {initCollectionHooks} from \"./init-collection-hooks.js\"\nimport {initGlobalHooks} from \"./init-global-hooks.js\"\nimport {initStepTasks} from \"./init-step-tasks.js\"\nimport {initWebhookEndpoint} from \"./init-webhook.js\"\nimport {initWorkflowHooks} from './init-workflow-hooks.js'\nimport {getConfigLogger, initializeLogger} from './logger.js'\n\nexport {getLogger} from './logger.js'\n\n// Improved executor registry with proper error handling and logging\ninterface ExecutorRegistry {\n executor: null | WorkflowExecutor\n isInitialized: boolean\n logger: any | null\n}\n\nconst executorRegistry: ExecutorRegistry = {\n executor: null,\n isInitialized: false,\n logger: null\n}\n\nconst setWorkflowExecutor = (executor: WorkflowExecutor, logger: any) => {\n executorRegistry.executor = executor\n executorRegistry.logger = logger\n executorRegistry.isInitialized = true\n\n logger.info('Workflow executor initialized and registered successfully')\n}\n\nconst getExecutorRegistry = (): ExecutorRegistry => {\n return executorRegistry\n}\n\n// Helper function to create failed workflow runs for tracking errors\nconst createFailedWorkflowRun = async (args: any, errorMessage: string, logger: any) => {\n try {\n // Only create failed workflow runs if we have enough context\n if (!args?.req?.payload || !args?.collection?.slug) {\n return\n }\n\n // Find workflows that should have been triggered\n const workflows = await args.req.payload.find({\n collection: 'workflows',\n limit: 10,\n req: args.req,\n where: {\n 'triggers.collectionSlug': {\n equals: args.collection.slug\n },\n 'triggers.operation': {\n equals: args.operation\n },\n 'triggers.type': {\n equals: 'collection-trigger'\n }\n }\n })\n\n // Create failed workflow runs for each matching workflow\n for (const workflow of workflows.docs) {\n await args.req.payload.create({\n collection: 'workflow-runs',\n data: {\n completedAt: new Date().toISOString(),\n context: {\n steps: {},\n trigger: {\n type: 'collection',\n collection: args.collection.slug,\n doc: args.doc,\n operation: args.operation,\n previousDoc: args.previousDoc,\n triggeredAt: new Date().toISOString()\n }\n },\n error: `Hook execution failed: ${errorMessage}`,\n inputs: {},\n logs: [{\n level: 'error',\n message: `Hook execution failed: ${errorMessage}`,\n timestamp: new Date().toISOString()\n }],\n outputs: {},\n startedAt: new Date().toISOString(),\n status: 'failed',\n steps: [],\n triggeredBy: args?.req?.user?.email || 'system',\n workflow: workflow.id,\n workflowVersion: 1\n },\n req: args.req\n })\n }\n\n if (workflows.docs.length > 0) {\n logger.info({\n errorMessage,\n workflowCount: workflows.docs.length\n }, 'Created failed workflow runs for hook execution error')\n }\n\n } catch (error) {\n // Don't let workflow run creation failures break the original operation\n logger.warn({\n error: error instanceof Error ? error.message : 'Unknown error'\n }, 'Failed to create failed workflow run record')\n }\n}\n\nconst applyCollectionsConfig = <T extends string>(pluginOptions: WorkflowsPluginConfig<T>, config: Config) => {\n // Add workflow collections\n if (!config.collections) {\n config.collections = []\n }\n\n config.collections.push(\n createWorkflowCollection(pluginOptions),\n WorkflowRunsCollection\n )\n}\n\n// Removed config-phase hook registration - user collections don't exist during config phase\n\n\nexport const workflowsPlugin =\n <TSlug extends string>(pluginOptions: WorkflowsPluginConfig<TSlug>) =>\n (config: Config): Config => {\n // If the plugin is disabled, return config unchanged\n if (pluginOptions.enabled === false) {\n return config\n }\n\n applyCollectionsConfig<TSlug>(pluginOptions, config)\n\n // CRITICAL: Modify existing collection configs BEFORE PayloadCMS processes them\n // This is the ONLY time we can add hooks that will actually work\n const logger = getConfigLogger()\n logger.info('Attempting to modify collection configs before PayloadCMS initialization...')\n\n if (config.collections && pluginOptions.collectionTriggers) {\n for (const [triggerSlug, triggerConfig] of Object.entries(pluginOptions.collectionTriggers)) {\n if (!triggerConfig) {continue}\n\n // Find the collection config that matches\n const collectionIndex = config.collections.findIndex(c => c.slug === triggerSlug)\n if (collectionIndex === -1) {\n logger.warn(`Collection '${triggerSlug}' not found in config.collections`)\n continue\n }\n\n const collection = config.collections[collectionIndex]\n logger.info(`Found collection '${triggerSlug}' - modifying its hooks...`)\n\n // Initialize hooks if needed\n if (!collection.hooks) {\n collection.hooks = {}\n }\n if (!collection.hooks.afterChange) {\n collection.hooks.afterChange = []\n }\n\n // Create a reliable hook function with proper dependency injection\n const automationHook = Object.assign(\n async function payloadAutomationHook(args: any) {\n const registry = getExecutorRegistry()\n\n // Use proper logger if available, fallback to args.req.payload.logger\n const logger = registry.logger || args?.req?.payload?.logger || console\n\n try {\n logger.info({\n collection: args?.collection?.slug,\n docId: args?.doc?.id,\n hookType: 'automation',\n operation: args?.operation\n }, 'Collection automation hook triggered')\n\n if (!registry.isInitialized) {\n logger.warn('Workflow executor not yet initialized, attempting lazy initialization')\n \n try {\n // Try to create executor if we have a payload instance\n if (args.req?.payload) {\n logger.info('Creating workflow executor via lazy initialization')\n const { WorkflowExecutor } = await import('../core/workflow-executor.js')\n const executor = new WorkflowExecutor(args.req.payload, logger)\n setWorkflowExecutor(executor, logger)\n logger.info('Lazy initialization successful')\n } else {\n logger.error('Cannot lazy initialize - no payload instance available')\n await createFailedWorkflowRun(args, 'Workflow executor not initialized and lazy initialization failed - no payload instance', logger)\n return undefined\n }\n } catch (error) {\n logger.error('Lazy initialization failed:', error)\n const errorMessage = error instanceof Error ? error.message : String(error)\n await createFailedWorkflowRun(args, `Workflow executor lazy initialization failed: ${errorMessage}`, logger)\n return undefined\n }\n }\n\n // Re-check registry after potential lazy initialization\n const updatedRegistry = getExecutorRegistry()\n if (!updatedRegistry.executor) {\n logger.error('Workflow executor is null despite being marked as initialized')\n // Create a failed workflow run to track this issue\n await createFailedWorkflowRun(args, 'Executor not available after initialization', logger)\n return undefined\n }\n\n logger.debug('Executing triggered workflows...')\n await updatedRegistry.executor.executeTriggeredWorkflows(\n args.collection.slug,\n args.operation,\n args.doc,\n args.previousDoc,\n args.req\n )\n\n logger.info({\n collection: args?.collection?.slug,\n docId: args?.doc?.id,\n operation: args?.operation\n }, 'Workflow execution completed successfully')\n\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n\n logger.error({\n collection: args?.collection?.slug,\n docId: args?.doc?.id,\n error: errorMessage,\n errorStack: error instanceof Error ? error.stack : undefined,\n operation: args?.operation\n }, 'Hook execution failed')\n\n // Create a failed workflow run to track this error\n try {\n await createFailedWorkflowRun(args, errorMessage, logger)\n } catch (createError) {\n logger.error({\n error: createError instanceof Error ? createError.message : 'Unknown error'\n }, 'Failed to create workflow run for hook error')\n }\n\n // Don't throw to prevent breaking the original operation\n }\n\n return undefined\n },\n {\n __isAutomationHook: true,\n __version: '0.0.22'\n }\n )\n\n // Add the hook to the collection config\n collection.hooks.afterChange.push(automationHook)\n logger.info(`Added automation hook to '${triggerSlug}' - hook count: ${collection.hooks.afterChange.length}`)\n }\n }\n\n if (!config.jobs) {\n config.jobs = {tasks: []}\n }\n\n const configLogger = getConfigLogger()\n configLogger.info(`Configuring workflow plugin with ${Object.keys(pluginOptions.collectionTriggers || {}).length} collection triggers`)\n\n // Generate cron tasks for workflows with cron triggers\n generateCronTasks(config)\n\n for (const step of pluginOptions.steps) {\n if (!config.jobs?.tasks?.find(task => task.slug === step.slug)) {\n configLogger.debug(`Registering task: ${step.slug}`)\n config.jobs?.tasks?.push(step)\n } else {\n configLogger.debug(`Task ${step.slug} already registered, skipping`)\n }\n }\n\n // Initialize webhook endpoint\n initWebhookEndpoint(config, pluginOptions.webhookPrefix || 'webhook')\n\n // Set up onInit to register collection hooks and initialize features\n const incomingOnInit = config.onInit\n config.onInit = async (payload) => {\n configLogger.info(`onInit called - collections: ${Object.keys(payload.collections).length}`)\n\n // Execute any existing onInit functions first\n if (incomingOnInit) {\n configLogger.debug('Executing existing onInit function')\n await incomingOnInit(payload)\n }\n\n // Initialize the logger with the payload instance\n const logger = initializeLogger(payload)\n logger.info('Logger initialized with payload instance')\n\n // Log collection trigger configuration\n logger.info(`Plugin configuration: ${Object.keys(pluginOptions.collectionTriggers || {}).length} collection triggers, ${pluginOptions.steps?.length || 0} steps`)\n\n // Create workflow executor instance\n console.log('🚨 CREATING WORKFLOW EXECUTOR INSTANCE')\n const executor = new WorkflowExecutor(payload, logger)\n console.log('🚨 EXECUTOR CREATED:', typeof executor)\n console.log('🚨 EXECUTOR METHODS:', Object.getOwnPropertyNames(Object.getPrototypeOf(executor)))\n\n // Register executor with proper dependency injection\n setWorkflowExecutor(executor, logger)\n\n // Hooks are now registered during config phase - just log status\n logger.info('Hooks were registered during config phase - executor now available')\n\n logger.info('Initializing global hooks...')\n initGlobalHooks(payload, logger, executor)\n\n logger.info('Initializing workflow hooks...')\n initWorkflowHooks(payload, logger)\n\n logger.info('Initializing step tasks...')\n initStepTasks(pluginOptions, payload, logger)\n\n // Register cron jobs for workflows with cron triggers\n logger.info('Registering cron jobs...')\n await registerCronJobs(payload, logger)\n\n logger.info('Plugin initialized successfully - all hooks registered')\n }\n\n return config\n }\n"],"names":["createWorkflowCollection","WorkflowRunsCollection","WorkflowExecutor","generateCronTasks","registerCronJobs","initGlobalHooks","initStepTasks","initWebhookEndpoint","initWorkflowHooks","getConfigLogger","initializeLogger","getLogger","executorRegistry","executor","isInitialized","logger","setWorkflowExecutor","info","getExecutorRegistry","createFailedWorkflowRun","args","errorMessage","req","payload","collection","slug","workflows","find","limit","where","equals","operation","workflow","docs","create","data","completedAt","Date","toISOString","context","steps","trigger","type","doc","previousDoc","triggeredAt","error","inputs","logs","level","message","timestamp","outputs","startedAt","status","triggeredBy","user","email","id","workflowVersion","length","workflowCount","warn","Error","applyCollectionsConfig","pluginOptions","config","collections","push","workflowsPlugin","enabled","collectionTriggers","triggerSlug","triggerConfig","Object","entries","collectionIndex","findIndex","c","hooks","afterChange","automationHook","assign","payloadAutomationHook","registry","console","docId","hookType","undefined","String","updatedRegistry","debug","executeTriggeredWorkflows","errorStack","stack","createError","__isAutomationHook","__version","jobs","tasks","configLogger","keys","step","task","webhookPrefix","incomingOnInit","onInit","log","getOwnPropertyNames","getPrototypeOf"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xtr-dev/payload-automation",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.32",
|
|
4
4
|
"description": "PayloadCMS Automation Plugin - Comprehensive workflow automation system with visual workflow building, execution tracking, and step types",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|