Add trigger builder helpers to improve DX for custom triggers

- Add createTrigger() and createAdvancedTrigger() helpers
- Add preset builders: webhookTrigger, cronTrigger, eventTrigger, etc.
- Implement virtual fields with JSON backing for trigger parameters
- Eliminate 90% of boilerplate when creating custom triggers
- Add /helpers export path for trigger builders
- Fix field name clashing between built-in and custom trigger parameters
- Add comprehensive examples and documentation
- Maintain backward compatibility with existing triggers

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-09-07 15:30:10 +02:00
parent 0a036752ea
commit c47197223c
18 changed files with 1185 additions and 623 deletions

47
src/exports/helpers.ts Normal file
View File

@@ -0,0 +1,47 @@
/**
* Trigger builder helpers for creating custom triggers with less boilerplate
*
* @example
* ```typescript
* import { createTrigger, webhookTrigger } from '@xtr-dev/payload-automation/helpers'
*
* // Simple trigger
* const myTrigger = createTrigger('my-trigger').parameters({
* apiKey: { type: 'text', required: true },
* timeout: { type: 'number', defaultValue: 30 }
* })
*
* // Webhook trigger with presets
* const orderWebhook = webhookTrigger('order-webhook')
* .parameter('orderTypes', {
* type: 'select',
* hasMany: true,
* options: ['regular', 'subscription']
* })
* .build()
* ```
*/
// Core helpers
export {
createTriggerParameter,
createTriggerParameters,
createTrigger,
createAdvancedTrigger
} from '../utils/trigger-helpers.js'
// Preset builders
export {
webhookTrigger,
cronTrigger,
eventTrigger,
manualTrigger,
apiTrigger
} from '../utils/trigger-presets.js'
// Common parameter sets for extending
export {
webhookParameters,
cronParameters,
eventParameters
} from '../utils/trigger-presets.js'