@payloadcms/plugin-sentry 4.0.0-canary.7 → 4.0.0-canary.9

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/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import type { Config } from 'payload';
2
1
  import type { PluginOptions } from './types.js';
3
2
  export { PluginOptions };
4
3
  /**
@@ -23,5 +22,5 @@ export { PluginOptions };
23
22
  * })
24
23
  * ```
25
24
  */
26
- export declare const sentryPlugin: (pluginOptions: PluginOptions) => (config: Config) => Config;
25
+ export declare const sentryPlugin: (options: PluginOptions) => import("payload").Plugin;
27
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAY,MAAM,EAAE,MAAM,SAAS,CAAA;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,OAAO,EAAE,aAAa,EAAE,CAAA;AACxB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,YAAY,GACtB,eAAe,aAAa,MAC5B,QAAQ,MAAM,KAAG,MA6DjB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,OAAO,EAAE,aAAa,EAAE,CAAA;AACxB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,YAAY,sDAiEvB,CAAA"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { definePlugin } from 'payload';
1
2
  /**
2
3
  * @example
3
4
  * ```ts
@@ -19,7 +20,9 @@
19
20
  * Sentry,
20
21
  * })
21
22
  * ```
22
- */ export const sentryPlugin = (pluginOptions)=>(config)=>{
23
+ */ export const sentryPlugin = definePlugin({
24
+ slug: '@payloadcms/plugin-sentry',
25
+ plugin: ({ config, options: pluginOptions })=>{
23
26
  const { enabled = true, options = {}, Sentry } = pluginOptions;
24
27
  if (!enabled || !Sentry) {
25
28
  return config;
@@ -51,9 +54,10 @@
51
54
  user: {
52
55
  id: args.req.user.id,
53
56
  collection: args.req.user.collection,
54
- email: args.req.user.email,
57
+ // Payload types email/username as nullable; Sentry's user expects string | undefined
58
+ email: args.req.user.email ?? undefined,
55
59
  ip_address: args.req.headers?.get('X-Forwarded-For') ?? undefined,
56
- username: args.req.user.username
60
+ username: args.req.user.username ?? undefined
57
61
  }
58
62
  }
59
63
  };
@@ -72,6 +76,7 @@
72
76
  ]
73
77
  }
74
78
  };
75
- };
79
+ }
80
+ });
76
81
 
77
82
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { ScopeContext } from '@sentry/types'\nimport type { APIError, Config } from 'payload'\n\nimport type { PluginOptions } from './types.js'\n\nexport { PluginOptions }\n/**\n * @example\n * ```ts\n * import * as Sentry from '@sentry/nextjs'\n *\n * sentryPlugin({\n * options: {\n * captureErrors: [400, 403],\n * context: ({ defaultContext, req }) => {\n * return {\n * ...defaultContext,\n * tags: {\n * locale: req.locale,\n * },\n * }\n * },\n * debug: true,\n * },\n * Sentry,\n * })\n * ```\n */\nexport const sentryPlugin =\n (pluginOptions: PluginOptions) =>\n (config: Config): Config => {\n const { enabled = true, options = {}, Sentry } = pluginOptions\n\n if (!enabled || !Sentry) {\n return config\n }\n\n const { captureErrors = [], debug = false } = options\n\n return {\n ...config,\n admin: {\n ...config.admin,\n components: {\n ...config.admin?.components,\n providers: [\n ...(config.admin?.components?.providers ?? []),\n '@payloadcms/plugin-sentry/client#AdminErrorBoundary',\n ],\n },\n },\n hooks: {\n afterError: [\n ...(config.hooks?.afterError ?? []),\n async (args) => {\n const status = (args.error as APIError).status ?? 500\n if (status >= 500 || captureErrors.includes(status)) {\n let context: Partial<ScopeContext> = {\n extra: {\n errorCollectionSlug: args.collection?.slug,\n },\n ...(args.req.user && {\n user: {\n id: args.req.user.id,\n collection: args.req.user.collection,\n email: args.req.user.email,\n ip_address: args.req.headers?.get('X-Forwarded-For') ?? undefined,\n username: args.req.user.username,\n },\n }),\n }\n\n if (options?.context) {\n context = await options.context({\n ...args,\n defaultContext: context,\n })\n }\n\n const id = Sentry.captureException(args.error, context)\n\n if (debug) {\n args.req.payload.logger.info(\n `Captured exception ${id} to Sentry, error msg: ${args.error.message}`,\n )\n }\n }\n },\n ],\n },\n }\n }\n"],"names":["sentryPlugin","pluginOptions","config","enabled","options","Sentry","captureErrors","debug","admin","components","providers","hooks","afterError","args","status","error","includes","context","extra","errorCollectionSlug","collection","slug","req","user","id","email","ip_address","headers","get","undefined","username","defaultContext","captureException","payload","logger","info","message"],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;CAqBC,GACD,OAAO,MAAMA,eACX,CAACC,gBACD,CAACC;QACC,MAAM,EAAEC,UAAU,IAAI,EAAEC,UAAU,CAAC,CAAC,EAAEC,MAAM,EAAE,GAAGJ;QAEjD,IAAI,CAACE,WAAW,CAACE,QAAQ;YACvB,OAAOH;QACT;QAEA,MAAM,EAAEI,gBAAgB,EAAE,EAAEC,QAAQ,KAAK,EAAE,GAAGH;QAE9C,OAAO;YACL,GAAGF,MAAM;YACTM,OAAO;gBACL,GAAGN,OAAOM,KAAK;gBACfC,YAAY;oBACV,GAAGP,OAAOM,KAAK,EAAEC,UAAU;oBAC3BC,WAAW;2BACLR,OAAOM,KAAK,EAAEC,YAAYC,aAAa,EAAE;wBAC7C;qBACD;gBACH;YACF;YACAC,OAAO;gBACLC,YAAY;uBACNV,OAAOS,KAAK,EAAEC,cAAc,EAAE;oBAClC,OAAOC;wBACL,MAAMC,SAAS,AAACD,KAAKE,KAAK,CAAcD,MAAM,IAAI;wBAClD,IAAIA,UAAU,OAAOR,cAAcU,QAAQ,CAACF,SAAS;4BACnD,IAAIG,UAAiC;gCACnCC,OAAO;oCACLC,qBAAqBN,KAAKO,UAAU,EAAEC;gCACxC;gCACA,GAAIR,KAAKS,GAAG,CAACC,IAAI,IAAI;oCACnBA,MAAM;wCACJC,IAAIX,KAAKS,GAAG,CAACC,IAAI,CAACC,EAAE;wCACpBJ,YAAYP,KAAKS,GAAG,CAACC,IAAI,CAACH,UAAU;wCACpCK,OAAOZ,KAAKS,GAAG,CAACC,IAAI,CAACE,KAAK;wCAC1BC,YAAYb,KAAKS,GAAG,CAACK,OAAO,EAAEC,IAAI,sBAAsBC;wCACxDC,UAAUjB,KAAKS,GAAG,CAACC,IAAI,CAACO,QAAQ;oCAClC;gCACF,CAAC;4BACH;4BAEA,IAAI1B,SAASa,SAAS;gCACpBA,UAAU,MAAMb,QAAQa,OAAO,CAAC;oCAC9B,GAAGJ,IAAI;oCACPkB,gBAAgBd;gCAClB;4BACF;4BAEA,MAAMO,KAAKnB,OAAO2B,gBAAgB,CAACnB,KAAKE,KAAK,EAAEE;4BAE/C,IAAIV,OAAO;gCACTM,KAAKS,GAAG,CAACW,OAAO,CAACC,MAAM,CAACC,IAAI,CAC1B,CAAC,mBAAmB,EAAEX,GAAG,uBAAuB,EAAEX,KAAKE,KAAK,CAACqB,OAAO,EAAE;4BAE1E;wBACF;oBACF;iBACD;YACH;QACF;IACF,EAAC"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { ScopeContext } from '@sentry/types'\nimport type { APIError } from 'payload'\n\nimport { definePlugin } from 'payload'\n\nimport type { PluginOptions } from './types.js'\n\nexport { PluginOptions }\n/**\n * @example\n * ```ts\n * import * as Sentry from '@sentry/nextjs'\n *\n * sentryPlugin({\n * options: {\n * captureErrors: [400, 403],\n * context: ({ defaultContext, req }) => {\n * return {\n * ...defaultContext,\n * tags: {\n * locale: req.locale,\n * },\n * }\n * },\n * debug: true,\n * },\n * Sentry,\n * })\n * ```\n */\nexport const sentryPlugin = definePlugin<PluginOptions>({\n slug: '@payloadcms/plugin-sentry',\n plugin: ({ config, options: pluginOptions }) => {\n const { enabled = true, options = {}, Sentry } = pluginOptions\n\n if (!enabled || !Sentry) {\n return config\n }\n\n const { captureErrors = [], debug = false } = options\n\n return {\n ...config,\n admin: {\n ...config.admin,\n components: {\n ...config.admin?.components,\n providers: [\n ...(config.admin?.components?.providers ?? []),\n '@payloadcms/plugin-sentry/client#AdminErrorBoundary',\n ],\n },\n },\n hooks: {\n afterError: [\n ...(config.hooks?.afterError ?? []),\n async (args) => {\n const status = (args.error as APIError).status ?? 500\n if (status >= 500 || captureErrors.includes(status)) {\n let context: Partial<ScopeContext> = {\n extra: {\n errorCollectionSlug: args.collection?.slug,\n },\n ...(args.req.user && {\n user: {\n id: args.req.user.id,\n collection: args.req.user.collection,\n // Payload types email/username as nullable; Sentry's user expects string | undefined\n email: args.req.user.email ?? undefined,\n ip_address: args.req.headers?.get('X-Forwarded-For') ?? undefined,\n username: args.req.user.username ?? undefined,\n },\n }),\n }\n\n if (options?.context) {\n context = await options.context({\n ...args,\n defaultContext: context,\n })\n }\n\n const id = Sentry.captureException(args.error, context)\n\n if (debug) {\n args.req.payload.logger.info(\n `Captured exception ${id} to Sentry, error msg: ${args.error.message}`,\n )\n }\n }\n },\n ],\n },\n }\n },\n})\n"],"names":["definePlugin","sentryPlugin","slug","plugin","config","options","pluginOptions","enabled","Sentry","captureErrors","debug","admin","components","providers","hooks","afterError","args","status","error","includes","context","extra","errorCollectionSlug","collection","req","user","id","email","undefined","ip_address","headers","get","username","defaultContext","captureException","payload","logger","info","message"],"mappings":"AAGA,SAASA,YAAY,QAAQ,UAAS;AAKtC;;;;;;;;;;;;;;;;;;;;;CAqBC,GACD,OAAO,MAAMC,eAAeD,aAA4B;IACtDE,MAAM;IACNC,QAAQ,CAAC,EAAEC,MAAM,EAAEC,SAASC,aAAa,EAAE;QACzC,MAAM,EAAEC,UAAU,IAAI,EAAEF,UAAU,CAAC,CAAC,EAAEG,MAAM,EAAE,GAAGF;QAEjD,IAAI,CAACC,WAAW,CAACC,QAAQ;YACvB,OAAOJ;QACT;QAEA,MAAM,EAAEK,gBAAgB,EAAE,EAAEC,QAAQ,KAAK,EAAE,GAAGL;QAE9C,OAAO;YACL,GAAGD,MAAM;YACTO,OAAO;gBACL,GAAGP,OAAOO,KAAK;gBACfC,YAAY;oBACV,GAAGR,OAAOO,KAAK,EAAEC,UAAU;oBAC3BC,WAAW;2BACLT,OAAOO,KAAK,EAAEC,YAAYC,aAAa,EAAE;wBAC7C;qBACD;gBACH;YACF;YACAC,OAAO;gBACLC,YAAY;uBACNX,OAAOU,KAAK,EAAEC,cAAc,EAAE;oBAClC,OAAOC;wBACL,MAAMC,SAAS,AAACD,KAAKE,KAAK,CAAcD,MAAM,IAAI;wBAClD,IAAIA,UAAU,OAAOR,cAAcU,QAAQ,CAACF,SAAS;4BACnD,IAAIG,UAAiC;gCACnCC,OAAO;oCACLC,qBAAqBN,KAAKO,UAAU,EAAErB;gCACxC;gCACA,GAAIc,KAAKQ,GAAG,CAACC,IAAI,IAAI;oCACnBA,MAAM;wCACJC,IAAIV,KAAKQ,GAAG,CAACC,IAAI,CAACC,EAAE;wCACpBH,YAAYP,KAAKQ,GAAG,CAACC,IAAI,CAACF,UAAU;wCACpC,qFAAqF;wCACrFI,OAAOX,KAAKQ,GAAG,CAACC,IAAI,CAACE,KAAK,IAAIC;wCAC9BC,YAAYb,KAAKQ,GAAG,CAACM,OAAO,EAAEC,IAAI,sBAAsBH;wCACxDI,UAAUhB,KAAKQ,GAAG,CAACC,IAAI,CAACO,QAAQ,IAAIJ;oCACtC;gCACF,CAAC;4BACH;4BAEA,IAAIvB,SAASe,SAAS;gCACpBA,UAAU,MAAMf,QAAQe,OAAO,CAAC;oCAC9B,GAAGJ,IAAI;oCACPiB,gBAAgBb;gCAClB;4BACF;4BAEA,MAAMM,KAAKlB,OAAO0B,gBAAgB,CAAClB,KAAKE,KAAK,EAAEE;4BAE/C,IAAIV,OAAO;gCACTM,KAAKQ,GAAG,CAACW,OAAO,CAACC,MAAM,CAACC,IAAI,CAC1B,CAAC,mBAAmB,EAAEX,GAAG,uBAAuB,EAAEV,KAAKE,KAAK,CAACoB,OAAO,EAAE;4BAE1E;wBACF;oBACF;iBACD;YACH;QACF;IACF;AACF,GAAE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/plugin-sentry",
3
- "version": "4.0.0-canary.7",
3
+ "version": "4.0.0-canary.9",
4
4
  "description": "Sentry plugin for Payload",
5
5
  "keywords": [
6
6
  "payload",
@@ -51,12 +51,12 @@
51
51
  "@types/react": "19.2.14",
52
52
  "@types/react-dom": "19.2.3",
53
53
  "@payloadcms/eslint-config": "3.28.0",
54
- "payload": "4.0.0-canary.7"
54
+ "payload": "4.0.0-canary.9"
55
55
  },
56
56
  "peerDependencies": {
57
57
  "react": "^19.0.1 || ^19.1.2 || ^19.2.1",
58
58
  "react-dom": "^19.0.1 || ^19.1.2 || ^19.2.1",
59
- "payload": "4.0.0-canary.7"
59
+ "payload": "4.0.0-canary.9"
60
60
  },
61
61
  "homepage:": "https://payloadcms.com",
62
62
  "scripts": {