nightingale-sentry 13.0.0 → 14.0.1

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/CHANGELOG.md CHANGED
@@ -3,6 +3,35 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [14.0.1](https://github.com/christophehurpeau/nightingale/compare/v14.0.0...v14.0.1) (2023-06-30)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * add missing type in exports for latest typescript ([8897fd6](https://github.com/christophehurpeau/nightingale/commit/8897fd6fcbd25975482fd1549277b73ed725e53c))
12
+
13
+
14
+
15
+ ## [14.0.0](https://github.com/christophehurpeau/nightingale/compare/v13.0.0...v14.0.0) (2023-06-30)
16
+
17
+
18
+ ### ⚠ BREAKING CHANGES
19
+
20
+ * **deps:** require node 18
21
+ * requires node 18
22
+
23
+ ### Features
24
+
25
+ * **nightingale-sentry:** add message in additional data ([4349dc9](https://github.com/christophehurpeau/nightingale/commit/4349dc9bd6cad2070a976033c62e77d5e99113f7))
26
+ * requires node 18 ([4452b11](https://github.com/christophehurpeau/nightingale/commit/4452b116188e58c293be85e462e04922f7ad51f0))
27
+
28
+
29
+ ### Miscellaneous Chores
30
+
31
+ * **deps:** update dependency @pob/root to v8 ([#760](https://github.com/christophehurpeau/nightingale/issues/760)) ([22dc3cc](https://github.com/christophehurpeau/nightingale/commit/22dc3cceabdfd465d04ee36fec8fdac31febab69))
32
+
33
+
34
+
6
35
  # [13.0.0](https://github.com/christophehurpeau/nightingale/compare/v12.1.4...v13.0.0) (2022-11-19)
7
36
 
8
37
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,cAAc,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,IAAI,EAAiB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAgB9E,MAAM,WAAW,iBAAkB,SAAQ,QAAQ;IACjD,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,iBAAiB,EACpC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KACjB,IAAI,GAAG,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,iBAAiB,EACpC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KACjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,qBAAqB,CAAC,EAAE,CAAC,CAAC,SAAS,QAAQ,EACzC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KACjB,MAAM,GAAG,SAAS,CAAC;IACxB,iBAAiB,CAAC,EAAE,CAAC,CAAC,SAAS,QAAQ,EACrC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KACjB,MAAM,GAAG,SAAS,CAAC;IACxB,qBAAqB,CAAC,EAAE,CAAC,CAAC,SAAS,iBAAiB,EAClD,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KACjB,OAAO,CAAC;IACb,sBAAsB,CAAC,EAAE,CAAC,CAAC,SAAS,QAAQ,EAC1C,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KACjB,OAAO,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,cAAc,EAAE,OAAO,cAAc,CAAC;CACvC;AA+CD,qBAAa,aAAa,CAAC,CAAC,SAAS,qBAAqB,CAAE,YAAW,OAAO;IAC5E,QAAQ,EAAE,KAAK,CAAC;IAEhB,MAAM,EAAE,MAAM,CAAC;gBAEH,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO;CAI1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,cAAc,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,IAAI,EAAiB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAgB9E,MAAM,WAAW,iBAAkB,SAAQ,QAAQ;IACjD,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,iBAAiB,EACpC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KACjB,IAAI,GAAG,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,iBAAiB,EACpC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KACjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,qBAAqB,CAAC,EAAE,CAAC,CAAC,SAAS,QAAQ,EACzC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KACjB,MAAM,GAAG,SAAS,CAAC;IACxB,iBAAiB,CAAC,EAAE,CAAC,CAAC,SAAS,QAAQ,EACrC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KACjB,MAAM,GAAG,SAAS,CAAC;IACxB,qBAAqB,CAAC,EAAE,CAAC,CAAC,SAAS,iBAAiB,EAClD,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KACjB,OAAO,CAAC;IACb,sBAAsB,CAAC,EAAE,CAAC,CAAC,SAAS,QAAQ,EAC1C,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,KACjB,OAAO,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,cAAc,EAAE,OAAO,cAAc,CAAC;CACvC;AAmDD,qBAAa,aAAa,CAAC,CAAC,SAAS,qBAAqB,CAAE,YAAW,OAAO;IAC5E,QAAQ,EAAE,KAAK,CAAC;IAEhB,MAAM,EAAE,MAAM,CAAC;gBAEH,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO;CAI1D"}
@@ -34,10 +34,15 @@ var createHandler = function createHandler(Sentry, _temp) {
34
34
  var key = record.key,
35
35
  level = record.level,
36
36
  metadata = record.metadata,
37
- extra = record.extra;
37
+ extra = record.extra,
38
+ message = record.message,
39
+ error,
40
+ extraData;
38
41
  if (shouldSendAsException(record)) {
39
- var error = (metadata == null ? void 0 : metadata.error) || record.message;
40
- var extraData = _extends({}, metadata, extra);
42
+ error = (metadata == null ? void 0 : metadata.error) || record.message;
43
+ extraData = _extends({
44
+ nightingaleErrorMessage: message
45
+ }, metadata, extra);
41
46
  delete extraData.error;
42
47
  Sentry.captureException(error, {
43
48
  level: mapToSentryLevel[level] || 'error',
@@ -1 +1 @@
1
- {"version":3,"file":"index-browser.es.js","sources":["../src/index.ts"],"sourcesContent":["import type {\n addBreadcrumb,\n captureException,\n captureMessage,\n} from '@sentry/core';\nimport type { User, SeverityLevel } from '@sentry/types';\nimport { Level } from 'nightingale-levels';\nimport type { LogRecord, Handle, Metadata, Handler } from 'nightingale-types';\n\nconst mapToSentryLevel: Record<Level, SeverityLevel> = {\n [Level.TRACE]: 'debug',\n [Level.DEBUG]: 'debug',\n [Level.INFO]: 'info',\n [Level.NOTICE]: 'log',\n [Level.WARNING]: 'warning',\n [Level.ERROR]: 'error',\n [Level.CRITICAL]: 'fatal',\n [Level.FATAL]: 'fatal',\n [Level.EMERGENCY]: 'fatal',\n // not a level\n [Level.ALL]: 'error',\n};\n\nexport interface MetadataWithError extends Metadata {\n error?: Error;\n}\n\nexport interface Options {\n getUser?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => User | undefined;\n getTags?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => Record<string, string>;\n getBreadcrumbCategory?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => string | undefined;\n getBreadcrumbType?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => string | undefined;\n shouldSendAsException?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => boolean;\n shouldSendAsBreadcrumb?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => boolean;\n}\n\nexport interface SentryRequiredMethods {\n addBreadcrumb: typeof addBreadcrumb;\n captureException: typeof captureException;\n captureMessage: typeof captureMessage;\n}\n\nconst createHandler = <S extends SentryRequiredMethods>(\n Sentry: S,\n {\n getUser = () => undefined,\n getTags = () => ({}),\n getBreadcrumbCategory = () => undefined,\n getBreadcrumbType = () => undefined,\n shouldSendAsException = <T extends Metadata>(record: LogRecord<T>) =>\n record.metadata?.error !== undefined &&\n record.metadata.unhandled !== true,\n shouldSendAsBreadcrumb = <T extends Metadata>(record: LogRecord<T>) =>\n false,\n }: Options = {},\n): Handle => {\n return <T extends MetadataWithError>(record: LogRecord<T>) => {\n const { key, level, metadata, extra } = record;\n\n if (shouldSendAsException(record)) {\n const error = metadata?.error || record.message;\n\n const extraData: Record<string, unknown> = { ...metadata, ...extra };\n delete extraData.error;\n\n Sentry.captureException(error, {\n level: mapToSentryLevel[level] || 'error',\n user: getUser(record),\n tags: {\n loggerKey: key,\n ...getTags(record),\n },\n extra: extraData,\n });\n } else if (shouldSendAsBreadcrumb(record)) {\n Sentry.addBreadcrumb({\n level: mapToSentryLevel[level] || 'error',\n category: getBreadcrumbCategory(record),\n type: getBreadcrumbType(record),\n message: record.message,\n data: record.metadata,\n timestamp: record.datetime.getTime(),\n });\n }\n };\n};\n\nexport class SentryHandler<S extends SentryRequiredMethods> implements Handler {\n minLevel: Level;\n\n handle: Handle;\n\n constructor(Sentry: S, minLevel: Level, options?: Options) {\n this.minLevel = minLevel;\n this.handle = createHandler<S>(Sentry, options);\n }\n}\n"],"names":["mapToSentryLevel","Level","TRACE","DEBUG","INFO","NOTICE","WARNING","ERROR","CRITICAL","FATAL","EMERGENCY","ALL","createHandler","Sentry","getUser","undefined","getTags","getBreadcrumbCategory","getBreadcrumbType","shouldSendAsException","record","metadata","error","unhandled","shouldSendAsBreadcrumb","key","level","extra","message","extraData","captureException","user","tags","loggerKey","addBreadcrumb","category","type","data","timestamp","datetime","getTime","SentryHandler","minLevel","options","handle"],"mappings":"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"}
1
+ {"version":3,"file":"index-browser.es.js","sources":["../src/index.ts"],"sourcesContent":["import type {\n addBreadcrumb,\n captureException,\n captureMessage,\n} from '@sentry/core';\nimport type { User, SeverityLevel } from '@sentry/types';\nimport { Level } from 'nightingale-levels';\nimport type { LogRecord, Handle, Metadata, Handler } from 'nightingale-types';\n\nconst mapToSentryLevel: Record<Level, SeverityLevel> = {\n [Level.TRACE]: 'debug',\n [Level.DEBUG]: 'debug',\n [Level.INFO]: 'info',\n [Level.NOTICE]: 'log',\n [Level.WARNING]: 'warning',\n [Level.ERROR]: 'error',\n [Level.CRITICAL]: 'fatal',\n [Level.FATAL]: 'fatal',\n [Level.EMERGENCY]: 'fatal',\n // not a level\n [Level.ALL]: 'error',\n};\n\nexport interface MetadataWithError extends Metadata {\n error?: Error;\n}\n\nexport interface Options {\n getUser?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => User | undefined;\n getTags?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => Record<string, string>;\n getBreadcrumbCategory?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => string | undefined;\n getBreadcrumbType?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => string | undefined;\n shouldSendAsException?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => boolean;\n shouldSendAsBreadcrumb?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => boolean;\n}\n\nexport interface SentryRequiredMethods {\n addBreadcrumb: typeof addBreadcrumb;\n captureException: typeof captureException;\n captureMessage: typeof captureMessage;\n}\n\nconst createHandler = <S extends SentryRequiredMethods>(\n Sentry: S,\n {\n getUser = () => undefined,\n getTags = () => ({}),\n getBreadcrumbCategory = () => undefined,\n getBreadcrumbType = () => undefined,\n shouldSendAsException = <T extends Metadata>(record: LogRecord<T>) =>\n record.metadata?.error !== undefined &&\n record.metadata.unhandled !== true,\n shouldSendAsBreadcrumb = <T extends Metadata>(record: LogRecord<T>) =>\n false,\n }: Options = {},\n): Handle => {\n return <T extends MetadataWithError>(record: LogRecord<T>) => {\n const { key, level, metadata, extra, message } = record;\n\n if (shouldSendAsException(record)) {\n const error = metadata?.error || record.message;\n\n const extraData: Record<string, unknown> = {\n nightingaleErrorMessage: message,\n ...metadata,\n ...extra,\n };\n delete extraData.error;\n\n Sentry.captureException(error, {\n level: mapToSentryLevel[level] || 'error',\n user: getUser(record),\n tags: {\n loggerKey: key,\n ...getTags(record),\n },\n extra: extraData,\n });\n } else if (shouldSendAsBreadcrumb(record)) {\n Sentry.addBreadcrumb({\n level: mapToSentryLevel[level] || 'error',\n category: getBreadcrumbCategory(record),\n type: getBreadcrumbType(record),\n message: record.message,\n data: record.metadata,\n timestamp: record.datetime.getTime(),\n });\n }\n };\n};\n\nexport class SentryHandler<S extends SentryRequiredMethods> implements Handler {\n minLevel: Level;\n\n handle: Handle;\n\n constructor(Sentry: S, minLevel: Level, options?: Options) {\n this.minLevel = minLevel;\n this.handle = createHandler<S>(Sentry, options);\n }\n}\n"],"names":["mapToSentryLevel","_mapToSentryLevel","Level","TRACE","DEBUG","INFO","NOTICE","WARNING","ERROR","CRITICAL","FATAL","EMERGENCY","ALL","createHandler","Sentry","_temp","_ref","_ref$getUser","getUser","undefined","_ref$getTags","getTags","_ref$getBreadcrumbCat","getBreadcrumbCategory","_ref$getBreadcrumbTyp","getBreadcrumbType","_ref$shouldSendAsExce","shouldSendAsException","record","_record$metadata","metadata","error","unhandled","_ref$shouldSendAsBrea","shouldSendAsBreadcrumb","key","level","extra","message","extraData","_extends","nightingaleErrorMessage","captureException","user","tags","loggerKey","addBreadcrumb","category","type","data","timestamp","datetime","getTime","SentryHandler","minLevel","options","handle"],"mappings":"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"}
@@ -18,10 +18,7 @@ const createHandler = (Sentry, {
18
18
  getTags = () => ({}),
19
19
  getBreadcrumbCategory = () => undefined,
20
20
  getBreadcrumbType = () => undefined,
21
- shouldSendAsException = record => {
22
- var _record$metadata;
23
- return ((_record$metadata = record.metadata) === null || _record$metadata === void 0 ? void 0 : _record$metadata.error) !== undefined && record.metadata.unhandled !== true;
24
- },
21
+ shouldSendAsException = record => record.metadata?.error !== undefined && record.metadata.unhandled !== true,
25
22
  shouldSendAsBreadcrumb = () => false
26
23
  } = {}) => {
27
24
  return record => {
@@ -29,11 +26,13 @@ const createHandler = (Sentry, {
29
26
  key,
30
27
  level,
31
28
  metadata,
32
- extra
29
+ extra,
30
+ message
33
31
  } = record;
34
32
  if (shouldSendAsException(record)) {
35
- const error = (metadata === null || metadata === void 0 ? void 0 : metadata.error) || record.message;
33
+ const error = metadata?.error || record.message;
36
34
  const extraData = {
35
+ nightingaleErrorMessage: message,
37
36
  ...metadata,
38
37
  ...extra
39
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index-browsermodern.es.js","sources":["../src/index.ts"],"sourcesContent":["import type {\n addBreadcrumb,\n captureException,\n captureMessage,\n} from '@sentry/core';\nimport type { User, SeverityLevel } from '@sentry/types';\nimport { Level } from 'nightingale-levels';\nimport type { LogRecord, Handle, Metadata, Handler } from 'nightingale-types';\n\nconst mapToSentryLevel: Record<Level, SeverityLevel> = {\n [Level.TRACE]: 'debug',\n [Level.DEBUG]: 'debug',\n [Level.INFO]: 'info',\n [Level.NOTICE]: 'log',\n [Level.WARNING]: 'warning',\n [Level.ERROR]: 'error',\n [Level.CRITICAL]: 'fatal',\n [Level.FATAL]: 'fatal',\n [Level.EMERGENCY]: 'fatal',\n // not a level\n [Level.ALL]: 'error',\n};\n\nexport interface MetadataWithError extends Metadata {\n error?: Error;\n}\n\nexport interface Options {\n getUser?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => User | undefined;\n getTags?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => Record<string, string>;\n getBreadcrumbCategory?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => string | undefined;\n getBreadcrumbType?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => string | undefined;\n shouldSendAsException?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => boolean;\n shouldSendAsBreadcrumb?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => boolean;\n}\n\nexport interface SentryRequiredMethods {\n addBreadcrumb: typeof addBreadcrumb;\n captureException: typeof captureException;\n captureMessage: typeof captureMessage;\n}\n\nconst createHandler = <S extends SentryRequiredMethods>(\n Sentry: S,\n {\n getUser = () => undefined,\n getTags = () => ({}),\n getBreadcrumbCategory = () => undefined,\n getBreadcrumbType = () => undefined,\n shouldSendAsException = <T extends Metadata>(record: LogRecord<T>) =>\n record.metadata?.error !== undefined &&\n record.metadata.unhandled !== true,\n shouldSendAsBreadcrumb = <T extends Metadata>(record: LogRecord<T>) =>\n false,\n }: Options = {},\n): Handle => {\n return <T extends MetadataWithError>(record: LogRecord<T>) => {\n const { key, level, metadata, extra } = record;\n\n if (shouldSendAsException(record)) {\n const error = metadata?.error || record.message;\n\n const extraData: Record<string, unknown> = { ...metadata, ...extra };\n delete extraData.error;\n\n Sentry.captureException(error, {\n level: mapToSentryLevel[level] || 'error',\n user: getUser(record),\n tags: {\n loggerKey: key,\n ...getTags(record),\n },\n extra: extraData,\n });\n } else if (shouldSendAsBreadcrumb(record)) {\n Sentry.addBreadcrumb({\n level: mapToSentryLevel[level] || 'error',\n category: getBreadcrumbCategory(record),\n type: getBreadcrumbType(record),\n message: record.message,\n data: record.metadata,\n timestamp: record.datetime.getTime(),\n });\n }\n };\n};\n\nexport class SentryHandler<S extends SentryRequiredMethods> implements Handler {\n minLevel: Level;\n\n handle: Handle;\n\n constructor(Sentry: S, minLevel: Level, options?: Options) {\n this.minLevel = minLevel;\n this.handle = createHandler<S>(Sentry, options);\n }\n}\n"],"names":["mapToSentryLevel","Level","TRACE","DEBUG","INFO","NOTICE","WARNING","ERROR","CRITICAL","FATAL","EMERGENCY","ALL","createHandler","Sentry","getUser","undefined","getTags","getBreadcrumbCategory","getBreadcrumbType","shouldSendAsException","record","metadata","error","unhandled","shouldSendAsBreadcrumb","key","level","extra","message","extraData","captureException","user","tags","loggerKey","addBreadcrumb","category","type","data","timestamp","datetime","getTime","SentryHandler","constructor","minLevel","options","handle"],"mappings":"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"}
1
+ {"version":3,"file":"index-browsermodern.es.js","sources":["../src/index.ts"],"sourcesContent":["import type {\n addBreadcrumb,\n captureException,\n captureMessage,\n} from '@sentry/core';\nimport type { User, SeverityLevel } from '@sentry/types';\nimport { Level } from 'nightingale-levels';\nimport type { LogRecord, Handle, Metadata, Handler } from 'nightingale-types';\n\nconst mapToSentryLevel: Record<Level, SeverityLevel> = {\n [Level.TRACE]: 'debug',\n [Level.DEBUG]: 'debug',\n [Level.INFO]: 'info',\n [Level.NOTICE]: 'log',\n [Level.WARNING]: 'warning',\n [Level.ERROR]: 'error',\n [Level.CRITICAL]: 'fatal',\n [Level.FATAL]: 'fatal',\n [Level.EMERGENCY]: 'fatal',\n // not a level\n [Level.ALL]: 'error',\n};\n\nexport interface MetadataWithError extends Metadata {\n error?: Error;\n}\n\nexport interface Options {\n getUser?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => User | undefined;\n getTags?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => Record<string, string>;\n getBreadcrumbCategory?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => string | undefined;\n getBreadcrumbType?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => string | undefined;\n shouldSendAsException?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => boolean;\n shouldSendAsBreadcrumb?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => boolean;\n}\n\nexport interface SentryRequiredMethods {\n addBreadcrumb: typeof addBreadcrumb;\n captureException: typeof captureException;\n captureMessage: typeof captureMessage;\n}\n\nconst createHandler = <S extends SentryRequiredMethods>(\n Sentry: S,\n {\n getUser = () => undefined,\n getTags = () => ({}),\n getBreadcrumbCategory = () => undefined,\n getBreadcrumbType = () => undefined,\n shouldSendAsException = <T extends Metadata>(record: LogRecord<T>) =>\n record.metadata?.error !== undefined &&\n record.metadata.unhandled !== true,\n shouldSendAsBreadcrumb = <T extends Metadata>(record: LogRecord<T>) =>\n false,\n }: Options = {},\n): Handle => {\n return <T extends MetadataWithError>(record: LogRecord<T>) => {\n const { key, level, metadata, extra, message } = record;\n\n if (shouldSendAsException(record)) {\n const error = metadata?.error || record.message;\n\n const extraData: Record<string, unknown> = {\n nightingaleErrorMessage: message,\n ...metadata,\n ...extra,\n };\n delete extraData.error;\n\n Sentry.captureException(error, {\n level: mapToSentryLevel[level] || 'error',\n user: getUser(record),\n tags: {\n loggerKey: key,\n ...getTags(record),\n },\n extra: extraData,\n });\n } else if (shouldSendAsBreadcrumb(record)) {\n Sentry.addBreadcrumb({\n level: mapToSentryLevel[level] || 'error',\n category: getBreadcrumbCategory(record),\n type: getBreadcrumbType(record),\n message: record.message,\n data: record.metadata,\n timestamp: record.datetime.getTime(),\n });\n }\n };\n};\n\nexport class SentryHandler<S extends SentryRequiredMethods> implements Handler {\n minLevel: Level;\n\n handle: Handle;\n\n constructor(Sentry: S, minLevel: Level, options?: Options) {\n this.minLevel = minLevel;\n this.handle = createHandler<S>(Sentry, options);\n }\n}\n"],"names":["mapToSentryLevel","Level","TRACE","DEBUG","INFO","NOTICE","WARNING","ERROR","CRITICAL","FATAL","EMERGENCY","ALL","createHandler","Sentry","getUser","undefined","getTags","getBreadcrumbCategory","getBreadcrumbType","shouldSendAsException","record","metadata","error","unhandled","shouldSendAsBreadcrumb","key","level","extra","message","extraData","nightingaleErrorMessage","captureException","user","tags","loggerKey","addBreadcrumb","category","type","data","timestamp","datetime","getTime","SentryHandler","constructor","minLevel","options","handle"],"mappings":"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"}
@@ -26,11 +26,13 @@ const createHandler = (Sentry, {
26
26
  key,
27
27
  level,
28
28
  metadata,
29
- extra
29
+ extra,
30
+ message
30
31
  } = record;
31
32
  if (shouldSendAsException(record)) {
32
33
  const error = metadata?.error || record.message;
33
34
  const extraData = {
35
+ nightingaleErrorMessage: message,
34
36
  ...metadata,
35
37
  ...extra
36
38
  };
@@ -64,4 +66,4 @@ class SentryHandler {
64
66
  }
65
67
 
66
68
  export { SentryHandler };
67
- //# sourceMappingURL=index-node16.mjs.map
69
+ //# sourceMappingURL=index-node18.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-node18.mjs","sources":["../src/index.ts"],"sourcesContent":["import type {\n addBreadcrumb,\n captureException,\n captureMessage,\n} from '@sentry/core';\nimport type { User, SeverityLevel } from '@sentry/types';\nimport { Level } from 'nightingale-levels';\nimport type { LogRecord, Handle, Metadata, Handler } from 'nightingale-types';\n\nconst mapToSentryLevel: Record<Level, SeverityLevel> = {\n [Level.TRACE]: 'debug',\n [Level.DEBUG]: 'debug',\n [Level.INFO]: 'info',\n [Level.NOTICE]: 'log',\n [Level.WARNING]: 'warning',\n [Level.ERROR]: 'error',\n [Level.CRITICAL]: 'fatal',\n [Level.FATAL]: 'fatal',\n [Level.EMERGENCY]: 'fatal',\n // not a level\n [Level.ALL]: 'error',\n};\n\nexport interface MetadataWithError extends Metadata {\n error?: Error;\n}\n\nexport interface Options {\n getUser?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => User | undefined;\n getTags?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => Record<string, string>;\n getBreadcrumbCategory?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => string | undefined;\n getBreadcrumbType?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => string | undefined;\n shouldSendAsException?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => boolean;\n shouldSendAsBreadcrumb?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => boolean;\n}\n\nexport interface SentryRequiredMethods {\n addBreadcrumb: typeof addBreadcrumb;\n captureException: typeof captureException;\n captureMessage: typeof captureMessage;\n}\n\nconst createHandler = <S extends SentryRequiredMethods>(\n Sentry: S,\n {\n getUser = () => undefined,\n getTags = () => ({}),\n getBreadcrumbCategory = () => undefined,\n getBreadcrumbType = () => undefined,\n shouldSendAsException = <T extends Metadata>(record: LogRecord<T>) =>\n record.metadata?.error !== undefined &&\n record.metadata.unhandled !== true,\n shouldSendAsBreadcrumb = <T extends Metadata>(record: LogRecord<T>) =>\n false,\n }: Options = {},\n): Handle => {\n return <T extends MetadataWithError>(record: LogRecord<T>) => {\n const { key, level, metadata, extra, message } = record;\n\n if (shouldSendAsException(record)) {\n const error = metadata?.error || record.message;\n\n const extraData: Record<string, unknown> = {\n nightingaleErrorMessage: message,\n ...metadata,\n ...extra,\n };\n delete extraData.error;\n\n Sentry.captureException(error, {\n level: mapToSentryLevel[level] || 'error',\n user: getUser(record),\n tags: {\n loggerKey: key,\n ...getTags(record),\n },\n extra: extraData,\n });\n } else if (shouldSendAsBreadcrumb(record)) {\n Sentry.addBreadcrumb({\n level: mapToSentryLevel[level] || 'error',\n category: getBreadcrumbCategory(record),\n type: getBreadcrumbType(record),\n message: record.message,\n data: record.metadata,\n timestamp: record.datetime.getTime(),\n });\n }\n };\n};\n\nexport class SentryHandler<S extends SentryRequiredMethods> implements Handler {\n minLevel: Level;\n\n handle: Handle;\n\n constructor(Sentry: S, minLevel: Level, options?: Options) {\n this.minLevel = minLevel;\n this.handle = createHandler<S>(Sentry, options);\n }\n}\n"],"names":["mapToSentryLevel","Level","TRACE","DEBUG","INFO","NOTICE","WARNING","ERROR","CRITICAL","FATAL","EMERGENCY","ALL","createHandler","Sentry","getUser","undefined","getTags","getBreadcrumbCategory","getBreadcrumbType","shouldSendAsException","record","metadata","error","unhandled","shouldSendAsBreadcrumb","key","level","extra","message","extraData","nightingaleErrorMessage","captureException","user","tags","loggerKey","addBreadcrumb","category","type","data","timestamp","datetime","getTime","SentryHandler","constructor","minLevel","options","handle"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nightingale-sentry",
3
- "version": "13.0.0",
3
+ "version": "14.0.1",
4
4
  "description": "Sentry handler for nightingale",
5
5
  "keywords": [
6
6
  "nightingale",
@@ -16,24 +16,27 @@
16
16
  "homepage": "https://github.com/christophehurpeau/nightingale",
17
17
  "type": "module",
18
18
  "engines": {
19
- "node": ">=16.0.0"
19
+ "node": ">=18.12.0"
20
20
  },
21
- "browserslist": [
22
- "defaults",
23
- "> 0.2%",
24
- "not ie < 12",
25
- "not safari < 10",
26
- "not ios_saf < 10"
27
- ],
28
- "main": "./dist/index-node16.mjs",
21
+ "browserslist": {
22
+ "production": [
23
+ "defaults",
24
+ "> 0.2%",
25
+ "not ie < 12",
26
+ "not safari < 10",
27
+ "not ios_saf < 10"
28
+ ]
29
+ },
30
+ "main": "./dist/index-node18.mjs",
29
31
  "types": "./dist/definitions/index.d.ts",
30
32
  "module": "./dist/index-browser.es.js",
31
33
  "browser": "./dist/index-browser.es.js",
32
34
  "exports": {
33
35
  "./package.json": "./package.json",
34
36
  ".": {
37
+ "type": "./dist/definitions/index.d.ts",
35
38
  "node": {
36
- "import": "./dist/index-node16.mjs"
39
+ "import": "./dist/index-node18.mjs"
37
40
  },
38
41
  "browser": {
39
42
  "browser:modern": {
@@ -46,7 +49,7 @@
46
49
  "sideEffects": false,
47
50
  "scripts": {
48
51
  "build": "yarn clean:build && rollup --config rollup.config.mjs && yarn run build:definitions",
49
- "build:definitions": "tsc -p",
52
+ "build:definitions": "tsc -p tsconfig.json",
50
53
  "clean": "yarn clean:build",
51
54
  "clean:build": "pob-babel-clean-out dist",
52
55
  "lint": "yarn run lint:eslint",
@@ -58,7 +61,7 @@
58
61
  "babelEnvs": [
59
62
  {
60
63
  "target": "node",
61
- "version": "16"
64
+ "version": "18"
62
65
  },
63
66
  {
64
67
  "target": "browser",
@@ -76,15 +79,14 @@
76
79
  "@sentry/core": "^7.19.0",
77
80
  "@sentry/node": "^7.19.0",
78
81
  "@sentry/types": "^7.19.0",
79
- "nightingale-levels": "13.0.0",
80
- "nightingale-types": "13.0.0"
82
+ "nightingale-levels": "14.0.1",
83
+ "nightingale-types": "14.0.1"
81
84
  },
82
85
  "devDependencies": {
83
- "@babel/core": "7.20.2",
84
- "@babel/preset-env": "7.20.2",
85
- "babel-preset-modern-browsers": "15.0.2",
86
- "pob-babel": "35.3.0",
87
- "typescript": "4.9.3"
86
+ "@babel/core": "7.22.5",
87
+ "@babel/preset-env": "7.22.5",
88
+ "pob-babel": "36.1.0",
89
+ "typescript": "5.1.6"
88
90
  },
89
- "gitHead": "52cf7e3c8762a07891da9dde497ec03298c15654"
91
+ "gitHead": "e012fc159ceae0db482198c3f0308e0fc6470ae1"
90
92
  }
package/src/index.ts CHANGED
@@ -67,12 +67,16 @@ const createHandler = <S extends SentryRequiredMethods>(
67
67
  }: Options = {},
68
68
  ): Handle => {
69
69
  return <T extends MetadataWithError>(record: LogRecord<T>) => {
70
- const { key, level, metadata, extra } = record;
70
+ const { key, level, metadata, extra, message } = record;
71
71
 
72
72
  if (shouldSendAsException(record)) {
73
73
  const error = metadata?.error || record.message;
74
74
 
75
- const extraData: Record<string, unknown> = { ...metadata, ...extra };
75
+ const extraData: Record<string, unknown> = {
76
+ nightingaleErrorMessage: message,
77
+ ...metadata,
78
+ ...extra,
79
+ };
76
80
  delete extraData.error;
77
81
 
78
82
  Sentry.captureException(error, {
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-node16.mjs","sources":["../src/index.ts"],"sourcesContent":["import type {\n addBreadcrumb,\n captureException,\n captureMessage,\n} from '@sentry/core';\nimport type { User, SeverityLevel } from '@sentry/types';\nimport { Level } from 'nightingale-levels';\nimport type { LogRecord, Handle, Metadata, Handler } from 'nightingale-types';\n\nconst mapToSentryLevel: Record<Level, SeverityLevel> = {\n [Level.TRACE]: 'debug',\n [Level.DEBUG]: 'debug',\n [Level.INFO]: 'info',\n [Level.NOTICE]: 'log',\n [Level.WARNING]: 'warning',\n [Level.ERROR]: 'error',\n [Level.CRITICAL]: 'fatal',\n [Level.FATAL]: 'fatal',\n [Level.EMERGENCY]: 'fatal',\n // not a level\n [Level.ALL]: 'error',\n};\n\nexport interface MetadataWithError extends Metadata {\n error?: Error;\n}\n\nexport interface Options {\n getUser?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => User | undefined;\n getTags?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => Record<string, string>;\n getBreadcrumbCategory?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => string | undefined;\n getBreadcrumbType?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => string | undefined;\n shouldSendAsException?: <T extends MetadataWithError>(\n record: LogRecord<T>,\n ) => boolean;\n shouldSendAsBreadcrumb?: <T extends Metadata>(\n record: LogRecord<T>,\n ) => boolean;\n}\n\nexport interface SentryRequiredMethods {\n addBreadcrumb: typeof addBreadcrumb;\n captureException: typeof captureException;\n captureMessage: typeof captureMessage;\n}\n\nconst createHandler = <S extends SentryRequiredMethods>(\n Sentry: S,\n {\n getUser = () => undefined,\n getTags = () => ({}),\n getBreadcrumbCategory = () => undefined,\n getBreadcrumbType = () => undefined,\n shouldSendAsException = <T extends Metadata>(record: LogRecord<T>) =>\n record.metadata?.error !== undefined &&\n record.metadata.unhandled !== true,\n shouldSendAsBreadcrumb = <T extends Metadata>(record: LogRecord<T>) =>\n false,\n }: Options = {},\n): Handle => {\n return <T extends MetadataWithError>(record: LogRecord<T>) => {\n const { key, level, metadata, extra } = record;\n\n if (shouldSendAsException(record)) {\n const error = metadata?.error || record.message;\n\n const extraData: Record<string, unknown> = { ...metadata, ...extra };\n delete extraData.error;\n\n Sentry.captureException(error, {\n level: mapToSentryLevel[level] || 'error',\n user: getUser(record),\n tags: {\n loggerKey: key,\n ...getTags(record),\n },\n extra: extraData,\n });\n } else if (shouldSendAsBreadcrumb(record)) {\n Sentry.addBreadcrumb({\n level: mapToSentryLevel[level] || 'error',\n category: getBreadcrumbCategory(record),\n type: getBreadcrumbType(record),\n message: record.message,\n data: record.metadata,\n timestamp: record.datetime.getTime(),\n });\n }\n };\n};\n\nexport class SentryHandler<S extends SentryRequiredMethods> implements Handler {\n minLevel: Level;\n\n handle: Handle;\n\n constructor(Sentry: S, minLevel: Level, options?: Options) {\n this.minLevel = minLevel;\n this.handle = createHandler<S>(Sentry, options);\n }\n}\n"],"names":["mapToSentryLevel","Level","TRACE","DEBUG","INFO","NOTICE","WARNING","ERROR","CRITICAL","FATAL","EMERGENCY","ALL","createHandler","Sentry","getUser","undefined","getTags","getBreadcrumbCategory","getBreadcrumbType","shouldSendAsException","record","metadata","error","unhandled","shouldSendAsBreadcrumb","key","level","extra","message","extraData","captureException","user","tags","loggerKey","addBreadcrumb","category","type","data","timestamp","datetime","getTime","SentryHandler","constructor","minLevel","options","handle"],"mappings":"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"}