Files
payload/packages/plugin-sentry/src/plugin.ts
2024-07-11 15:27:01 -04:00

32 lines
822 B
TypeScript

import type { Config } from 'payload'
import type { PluginOptions } from './types.js'
import { captureException } from './captureException.js'
import { startSentry } from './startSentry.js'
export const sentryPlugin =
(pluginOptions: PluginOptions) =>
(incomingConfig: Config): Config => {
const config = { ...incomingConfig }
if (pluginOptions.enabled === false || !pluginOptions.dsn) {
return config
}
config.hooks = {
...(incomingConfig.hooks || {}),
// eslint-disable-next-line @typescript-eslint/no-explicit-any
afterError: (err: any) => {
captureException(err)
},
}
config.onInit = async (payload) => {
if (incomingConfig.onInit) await incomingConfig.onInit(payload)
startSentry(pluginOptions, payload)
}
return config
}