Event-driven triggers for Cloudwerk (scheduled, queue, R2, webhooks)
npm install @cloudwerk/triggerEvent-driven triggers for Cloudwerk applications with support for scheduled, queue, R2, webhook, email, D1, and tail events.
``bash`
pnpm add @cloudwerk/trigger
`typescript
// app/triggers/daily-cleanup.ts
import { defineTrigger } from '@cloudwerk/trigger'
export default defineTrigger({
source: {
type: 'scheduled',
cron: '0 0 *', // Daily at midnight
},
async handle(event, ctx) {
await ctx.env.DB.exec('DELETE FROM sessions WHERE expires_at < datetime("now")')
},
})
`
`typescript`
defineTrigger({
source: { type: 'scheduled', cron: '0 9 1-5', timezone: 'America/New_York' },
handle: async (event, ctx) => { / ... / },
})
`typescript
import { stripeVerifier } from '@cloudwerk/trigger/verifiers'
defineTrigger({
source: {
type: 'webhook',
path: '/webhooks/stripe',
verifier: stripeVerifier({ secret: process.env.STRIPE_WEBHOOK_SECRET }),
},
handle: async (event, ctx) => { / ... / },
})
`
`typescript`
defineTrigger({
source: { type: 'queue', name: 'notifications', batchSize: 25 },
handle: async (event, ctx) => { / ... / },
})
`typescript`
defineTrigger({
source: { type: 'r2', bucket: 'uploads', events: ['object:create'], prefix: 'images/' },
handle: async (event, ctx) => { / ... / },
})
`typescript`
defineTrigger({
source: { type: 'email', domain: 'support.myapp.com' },
handle: async (event, ctx) => { / ... / },
})
`typescript`
defineTrigger({
source: { type: 'd1', database: 'DB', tables: ['users'], operations: ['INSERT', 'UPDATE'] },
handle: async (event, ctx) => { / ... / },
})
`typescript`
defineTrigger({
source: { type: 'tail', workers: ['api-worker'], filters: [{ field: 'outcome', value: 'exception' }] },
handle: async (event, ctx) => { / ... / },
})
`typescript``
import {
stripeVerifier,
githubVerifier,
slackVerifier,
shopifyVerifier,
linearVerifier,
customHmacVerifier,
} from '@cloudwerk/trigger/verifiers'
For complete documentation, visit the Cloudwerk Triggers Guide.
MIT