@sentry/browser 5.28.0 → 5.30.0

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.
@@ -35,9 +35,12 @@ export declare class GlobalHandlers implements Integration {
35
35
  */
36
36
  private _eventFromIncompleteOnError;
37
37
  /**
38
- * This function creates an Event from an TraceKitStackTrace that has part of it missing.
38
+ * Create an event from a promise rejection where the `reason` is a primitive.
39
+ *
40
+ * @param reason: The `reason` property of the promise rejection
41
+ * @returns An Event object with an appropriate `exception` value
39
42
  */
40
- private _eventFromIncompleteRejection;
43
+ private _eventFromRejectionWithPrimitive;
41
44
  /** JSDoc */
42
45
  private _enhanceEventWithInitialFrame;
43
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"globalhandlers.d.ts","sourceRoot":"","sources":["../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,WAAW,EAAY,MAAM,eAAe,CAAC;AAc7D,YAAY;AACZ,UAAU,0BAA0B;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,sBAAsB;AACtB,qBAAa,cAAe,YAAW,WAAW;IAChD;;OAEG;IACH,OAAc,EAAE,EAAE,MAAM,CAAoB;IAE5C;;OAEG;IACI,IAAI,EAAE,MAAM,CAAqB;IAExC,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD,YAAY;IACZ,OAAO,CAAC,wBAAwB,CAAkB;IAElD,YAAY;IACZ,OAAO,CAAC,qCAAqC,CAAkB;IAE/D,YAAY;gBACO,OAAO,CAAC,EAAE,0BAA0B;IAOvD;;OAEG;IACI,SAAS,IAAI,IAAI;IAcxB,YAAY;IACZ,OAAO,CAAC,4BAA4B;IA6CpC,YAAY;IACZ,OAAO,CAAC,yCAAyC;IAgEjD;;OAEG;IAEH,OAAO,CAAC,2BAA2B;IA6BnC;;OAEG;IAEH,OAAO,CAAC,6BAA6B;IAarC,YAAY;IAEZ,OAAO,CAAC,6BAA6B;CAuBtC"}
1
+ {"version":3,"file":"globalhandlers.d.ts","sourceRoot":"","sources":["../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,WAAW,EAAuB,MAAM,eAAe,CAAC;AAcxE,YAAY;AACZ,UAAU,0BAA0B;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,sBAAsB;AACtB,qBAAa,cAAe,YAAW,WAAW;IAChD;;OAEG;IACH,OAAc,EAAE,EAAE,MAAM,CAAoB;IAE5C;;OAEG;IACI,IAAI,EAAE,MAAM,CAAqB;IAExC,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD,YAAY;IACZ,OAAO,CAAC,wBAAwB,CAAkB;IAElD,YAAY;IACZ,OAAO,CAAC,qCAAqC,CAAkB;IAE/D,YAAY;gBACO,OAAO,CAAC,EAAE,0BAA0B;IAOvD;;OAEG;IACI,SAAS,IAAI,IAAI;IAcxB,YAAY;IACZ,OAAO,CAAC,4BAA4B;IA6CpC,YAAY;IACZ,OAAO,CAAC,yCAAyC;IAgEjD;;OAEG;IAEH,OAAO,CAAC,2BAA2B;IA6BnC;;;;;OAKG;IACH,OAAO,CAAC,gCAAgC;IAcxC,YAAY;IAEZ,OAAO,CAAC,6BAA6B;CAuBtC"}
@@ -106,7 +106,7 @@ var GlobalHandlers = /** @class */ (function () {
106
106
  }
107
107
  var client = currentHub.getClient();
108
108
  var event = utils_1.isPrimitive(error)
109
- ? _this._eventFromIncompleteRejection(error)
109
+ ? _this._eventFromRejectionWithPrimitive(error)
110
110
  : eventbuilder_1.eventFromUnknownInput(error, undefined, {
111
111
  attachStacktrace: client && client.getOptions().attachStacktrace,
112
112
  rejection: true,
@@ -154,16 +154,19 @@ var GlobalHandlers = /** @class */ (function () {
154
154
  return this._enhanceEventWithInitialFrame(event, url, line, column);
155
155
  };
156
156
  /**
157
- * This function creates an Event from an TraceKitStackTrace that has part of it missing.
157
+ * Create an event from a promise rejection where the `reason` is a primitive.
158
+ *
159
+ * @param reason: The `reason` property of the promise rejection
160
+ * @returns An Event object with an appropriate `exception` value
158
161
  */
159
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
160
- GlobalHandlers.prototype._eventFromIncompleteRejection = function (error) {
162
+ GlobalHandlers.prototype._eventFromRejectionWithPrimitive = function (reason) {
161
163
  return {
162
164
  exception: {
163
165
  values: [
164
166
  {
165
167
  type: 'UnhandledRejection',
166
- value: "Non-Error promise rejection captured with value: " + error,
168
+ // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)
169
+ value: "Non-Error promise rejection captured with value: " + String(reason),
167
170
  },
168
171
  ],
169
172
  },
@@ -1 +1 @@
1
- {"version":3,"file":"globalhandlers.js","sourceRoot":"","sources":["../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, Integration, Severity } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\n/** JSDoc */\ninterface GlobalHandlersIntegrations {\n onerror: boolean;\n onunhandledrejection: boolean;\n}\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /** JSDoc */\n private _onErrorHandlerInstalled: boolean = false;\n\n /** JSDoc */\n private _onUnhandledRejectionHandlerInstalled: boolean = false;\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n\n if (this._options.onerror) {\n logger.log('Global Handler attached: onerror');\n this._installGlobalOnErrorHandler();\n }\n\n if (this._options.onunhandledrejection) {\n logger.log('Global Handler attached: onunhandledrejection');\n this._installGlobalOnUnhandledRejectionHandler();\n }\n }\n\n /** JSDoc */\n private _installGlobalOnErrorHandler(): void {\n if (this._onErrorHandlerInstalled) {\n return;\n }\n\n addInstrumentationHandler({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const error = data.error;\n const currentHub = getCurrentHub();\n const hasIntegration = currentHub.getIntegration(GlobalHandlers);\n const isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return;\n }\n\n const client = currentHub.getClient();\n const event = isPrimitive(error)\n ? this._eventFromIncompleteOnError(data.msg, data.url, data.line, data.column)\n : this._enhanceEventWithInitialFrame(\n eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: false,\n }),\n data.url,\n data.line,\n data.column,\n );\n\n addExceptionMechanism(event, {\n handled: false,\n type: 'onerror',\n });\n\n currentHub.captureEvent(event, {\n originalException: error,\n });\n },\n type: 'error',\n });\n\n this._onErrorHandlerInstalled = true;\n }\n\n /** JSDoc */\n private _installGlobalOnUnhandledRejectionHandler(): void {\n if (this._onUnhandledRejectionHandlerInstalled) {\n return;\n }\n\n addInstrumentationHandler({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: (e: any) => {\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n const currentHub = getCurrentHub();\n const hasIntegration = currentHub.getIntegration(GlobalHandlers);\n const isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return true;\n }\n\n const client = currentHub.getClient();\n const event = isPrimitive(error)\n ? this._eventFromIncompleteRejection(error)\n : eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: true,\n });\n\n event.level = Severity.Error;\n\n addExceptionMechanism(event, {\n handled: false,\n type: 'onunhandledrejection',\n });\n\n currentHub.captureEvent(event, {\n originalException: error,\n });\n\n return;\n },\n type: 'unhandledrejection',\n });\n\n this._onUnhandledRejectionHandlerInstalled = true;\n }\n\n /**\n * This function creates a stack from an old, error-less onerror handler.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name;\n\n if (isString(message)) {\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name || 'Error',\n value: message,\n },\n ],\n },\n };\n\n return this._enhanceEventWithInitialFrame(event, url, line, column);\n }\n\n /**\n * This function creates an Event from an TraceKitStackTrace that has part of it missing.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _eventFromIncompleteRejection(error: any): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n value: `Non-Error promise rejection captured with value: ${error}`,\n },\n ],\n },\n };\n }\n\n /** JSDoc */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].stacktrace = event.exception.values[0].stacktrace || {};\n event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames || [];\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n if (event.exception.values[0].stacktrace.frames.length === 0) {\n event.exception.values[0].stacktrace.frames.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n }\n}\n"]}
1
+ {"version":3,"file":"globalhandlers.js","sourceRoot":"","sources":["../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, Integration, Primitive, Severity } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\n/** JSDoc */\ninterface GlobalHandlersIntegrations {\n onerror: boolean;\n onunhandledrejection: boolean;\n}\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /** JSDoc */\n private _onErrorHandlerInstalled: boolean = false;\n\n /** JSDoc */\n private _onUnhandledRejectionHandlerInstalled: boolean = false;\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n\n if (this._options.onerror) {\n logger.log('Global Handler attached: onerror');\n this._installGlobalOnErrorHandler();\n }\n\n if (this._options.onunhandledrejection) {\n logger.log('Global Handler attached: onunhandledrejection');\n this._installGlobalOnUnhandledRejectionHandler();\n }\n }\n\n /** JSDoc */\n private _installGlobalOnErrorHandler(): void {\n if (this._onErrorHandlerInstalled) {\n return;\n }\n\n addInstrumentationHandler({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const error = data.error;\n const currentHub = getCurrentHub();\n const hasIntegration = currentHub.getIntegration(GlobalHandlers);\n const isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return;\n }\n\n const client = currentHub.getClient();\n const event = isPrimitive(error)\n ? this._eventFromIncompleteOnError(data.msg, data.url, data.line, data.column)\n : this._enhanceEventWithInitialFrame(\n eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: false,\n }),\n data.url,\n data.line,\n data.column,\n );\n\n addExceptionMechanism(event, {\n handled: false,\n type: 'onerror',\n });\n\n currentHub.captureEvent(event, {\n originalException: error,\n });\n },\n type: 'error',\n });\n\n this._onErrorHandlerInstalled = true;\n }\n\n /** JSDoc */\n private _installGlobalOnUnhandledRejectionHandler(): void {\n if (this._onUnhandledRejectionHandlerInstalled) {\n return;\n }\n\n addInstrumentationHandler({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: (e: any) => {\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n const currentHub = getCurrentHub();\n const hasIntegration = currentHub.getIntegration(GlobalHandlers);\n const isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return true;\n }\n\n const client = currentHub.getClient();\n const event = isPrimitive(error)\n ? this._eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: true,\n });\n\n event.level = Severity.Error;\n\n addExceptionMechanism(event, {\n handled: false,\n type: 'onunhandledrejection',\n });\n\n currentHub.captureEvent(event, {\n originalException: error,\n });\n\n return;\n },\n type: 'unhandledrejection',\n });\n\n this._onUnhandledRejectionHandlerInstalled = true;\n }\n\n /**\n * This function creates a stack from an old, error-less onerror handler.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name;\n\n if (isString(message)) {\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name || 'Error',\n value: message,\n },\n ],\n },\n };\n\n return this._enhanceEventWithInitialFrame(event, url, line, column);\n }\n\n /**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\n private _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n }\n\n /** JSDoc */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].stacktrace = event.exception.values[0].stacktrace || {};\n event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames || [];\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n if (event.exception.values[0].stacktrace.frames.length === 0) {\n event.exception.values[0].stacktrace.frames.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/transports/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EACL,KAAK,EACL,QAAQ,IAAI,cAAc,EAC1B,iBAAiB,EAEjB,SAAS,EACT,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAiC,aAAa,EAAe,MAAM,eAAe,CAAC;AAE1F,0CAA0C;AAC1C,8BAAsB,aAAc,YAAW,SAAS;IAe5B,OAAO,EAAE,gBAAgB;IAdnD;;OAEG;IACI,GAAG,EAAE,MAAM,CAAC;IAEnB,0CAA0C;IAC1C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IAE7B,4CAA4C;IAC5C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAyB;IAElF,gEAAgE;IAChE,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAM;gBAEhC,OAAO,EAAE,gBAAgB;IAMnD;;OAEG;IACI,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC;IAIvD;;OAEG;IACI,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC;IAIpD;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,EACxB,WAAW,EACX,QAAQ,EACR,OAAO,EACP,OAAO,EACP,MAAM,GACP,EAAE;QACD,WAAW,EAAE,iBAAiB,CAAC;QAC/B,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAAC;QACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;QACvC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;QAC3F,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;KACpC,GAAG,IAAI;IAiBR;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIhD;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInD;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,OAAO;CAqB5E"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/transports/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EACL,KAAK,EACL,QAAQ,IAAI,cAAc,EAC1B,iBAAiB,EAEjB,SAAS,EACT,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAiC,aAAa,EAAe,MAAM,eAAe,CAAC;AAE1F,0CAA0C;AAC1C,8BAAsB,aAAc,YAAW,SAAS;IAe5B,OAAO,EAAE,gBAAgB;IAdnD;;OAEG;IACI,GAAG,EAAE,MAAM,CAAC;IAEnB,0CAA0C;IAC1C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IAE7B,4CAA4C;IAC5C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAyB;IAElF,gEAAgE;IAChE,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAM;gBAEhC,OAAO,EAAE,gBAAgB;IAMnD;;OAEG;IACI,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC;IAIvD;;OAEG;IACI,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC;IAIpD;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,EACxB,WAAW,EACX,QAAQ,EACR,OAAO,EACP,OAAO,EACP,MAAM,GACP,EAAE;QACD,WAAW,EAAE,iBAAiB,CAAC;QAC/B,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAAC;QACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;QACvC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;QAC3F,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;KACpC,GAAG,IAAI;IAiBR;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIhD;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInD;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,OAAO;CA+B5E"}
@@ -39,7 +39,7 @@ var BaseTransport = /** @class */ (function () {
39
39
  */
40
40
  var limited = this._handleRateLimit(headers);
41
41
  if (limited)
42
- utils_1.logger.warn("Too many requests, backing off till: " + this._disabledUntil(requestType));
42
+ utils_1.logger.warn("Too many requests, backing off until: " + this._disabledUntil(requestType));
43
43
  if (status === types_1.Status.Success) {
44
44
  resolve({ status: status });
45
45
  return;
@@ -68,6 +68,16 @@ var BaseTransport = /** @class */ (function () {
68
68
  var raHeader = headers['retry-after'];
69
69
  if (rlHeader) {
70
70
  try {
71
+ // rate limit headers are of the form
72
+ // <header>,<header>,..
73
+ // where each <header> is of the form
74
+ // <retry_after>: <categories>: <scope>: <reason_code>
75
+ // where
76
+ // <retry_after> is a delay in ms
77
+ // <categories> is the event type(s) (error, transaction, etc) being rate limited and is of the form
78
+ // <category>;<category>;...
79
+ // <scope> is what's being limited (org, project, or key) - ignored by SDK
80
+ // <reason_code> is an arbitrary string like "org_quota" - ignored by SDK
71
81
  for (var _c = tslib_1.__values(rlHeader.trim().split(',')), _d = _c.next(); !_d.done; _d = _c.next()) {
72
82
  var limit = _d.value;
73
83
  var parameters = limit.split(':', 2);
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/transports/base.ts"],"names":[],"mappings":"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","sourcesContent":["import { API } from '@sentry/core';\nimport {\n Event,\n Response as SentryResponse,\n SentryRequestType,\n Status,\n Transport,\n TransportOptions,\n} from '@sentry/types';\nimport { logger, parseRetryAfterHeader, PromiseBuffer, SentryError } from '@sentry/utils';\n\n/** Base Transport class implementation */\nexport abstract class BaseTransport implements Transport {\n /**\n * @deprecated\n */\n public url: string;\n\n /** Helper to get Sentry API endpoints. */\n protected readonly _api: API;\n\n /** A simple buffer holding all requests. */\n protected readonly _buffer: PromiseBuffer<SentryResponse> = new PromiseBuffer(30);\n\n /** Locks transport after receiving rate limits in a response */\n protected readonly _rateLimits: Record<string, Date> = {};\n\n public constructor(public options: TransportOptions) {\n this._api = new API(this.options.dsn);\n // eslint-disable-next-line deprecation/deprecation\n this.url = this._api.getStoreEndpointWithUrlEncodedAuth();\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(_: Event): PromiseLike<SentryResponse> {\n throw new SentryError('Transport Class has to implement `sendEvent` method');\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike<boolean> {\n return this._buffer.drain(timeout);\n }\n\n /**\n * Handle Sentry repsonse for promise-based transports.\n */\n protected _handleResponse({\n requestType,\n response,\n headers,\n resolve,\n reject,\n }: {\n requestType: SentryRequestType;\n response: Response | XMLHttpRequest;\n headers: Record<string, string | null>;\n resolve: (value?: SentryResponse | PromiseLike<SentryResponse> | null | undefined) => void;\n reject: (reason?: unknown) => void;\n }): void {\n const status = Status.fromHttpCode(response.status);\n /**\n * \"The name is case-insensitive.\"\n * https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n */\n const limited = this._handleRateLimit(headers);\n if (limited) logger.warn(`Too many requests, backing off till: ${this._disabledUntil(requestType)}`);\n\n if (status === Status.Success) {\n resolve({ status });\n return;\n }\n\n reject(response);\n }\n\n /**\n * Gets the time that given category is disabled until for rate limiting\n */\n protected _disabledUntil(category: string): Date {\n return this._rateLimits[category] || this._rateLimits.all;\n }\n\n /**\n * Checks if a category is rate limited\n */\n protected _isRateLimited(category: string): boolean {\n return this._disabledUntil(category) > new Date(Date.now());\n }\n\n /**\n * Sets internal _rateLimits from incoming headers. Returns true if headers contains a non-empty rate limiting header.\n */\n protected _handleRateLimit(headers: Record<string, string | null>): boolean {\n const now = Date.now();\n const rlHeader = headers['x-sentry-rate-limits'];\n const raHeader = headers['retry-after'];\n\n if (rlHeader) {\n for (const limit of rlHeader.trim().split(',')) {\n const parameters = limit.split(':', 2);\n const headerDelay = parseInt(parameters[0], 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n for (const category of parameters[1].split(';')) {\n this._rateLimits[category || 'all'] = new Date(now + delay);\n }\n }\n return true;\n } else if (raHeader) {\n this._rateLimits.all = new Date(now + parseRetryAfterHeader(now, raHeader));\n return true;\n }\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/transports/base.ts"],"names":[],"mappings":";;AAAA,qCAAmC;AACnC,uCAOuB;AACvB,uCAA0F;AAE1F,0CAA0C;AAC1C;IAeE,uBAA0B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;QANnD,4CAA4C;QACzB,YAAO,GAAkC,IAAI,qBAAa,CAAC,EAAE,CAAC,CAAC;QAElF,gEAAgE;QAC7C,gBAAW,GAAyB,EAAE,CAAC;QAGxD,IAAI,CAAC,IAAI,GAAG,IAAI,UAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,mDAAmD;QACnD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,kCAAkC,EAAE,CAAC;IAC5D,CAAC;IAED;;OAEG;IACI,iCAAS,GAAhB,UAAiB,CAAQ;QACvB,MAAM,IAAI,mBAAW,CAAC,qDAAqD,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACI,6BAAK,GAAZ,UAAa,OAAgB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACO,uCAAe,GAAzB,UAA0B,EAYzB;YAXC,4BAAW,EACX,sBAAQ,EACR,oBAAO,EACP,oBAAO,EACP,kBAAM;QAQN,IAAM,MAAM,GAAG,cAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpD;;;WAGG;QACH,IAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,OAAO;YAAE,cAAM,CAAC,IAAI,CAAC,2CAAyC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAG,CAAC,CAAC;QAEtG,IAAI,MAAM,KAAK,cAAM,CAAC,OAAO,EAAE;YAC7B,OAAO,CAAC,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;YACpB,OAAO;SACR;QAED,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnB,CAAC;IAED;;OAEG;IACO,sCAAc,GAAxB,UAAyB,QAAgB;QACvC,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IAC5D,CAAC;IAED;;OAEG;IACO,sCAAc,GAAxB,UAAyB,QAAgB;QACvC,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACO,wCAAgB,GAA1B,UAA2B,OAAsC;;QAC/D,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAM,QAAQ,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACjD,IAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QAExC,IAAI,QAAQ,EAAE;;gBACZ,qCAAqC;gBACrC,2BAA2B;gBAC3B,qCAAqC;gBACrC,0DAA0D;gBAC1D,QAAQ;gBACR,qCAAqC;gBACrC,wGAAwG;gBACxG,oCAAoC;gBACpC,8EAA8E;gBAC9E,6EAA6E;gBAC7E,KAAoB,IAAA,KAAA,iBAAA,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,gBAAA,4BAAE;oBAA3C,IAAM,KAAK,WAAA;oBACd,IAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBACvC,IAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAChD,IAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,gBAAgB;;wBAC/E,KAAuB,IAAA,oBAAA,iBAAA,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,CAAA,gBAAA,4BAAE;4BAA5C,IAAM,QAAQ,WAAA;4BACjB,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;yBAC7D;;;;;;;;;iBACF;;;;;;;;;YACD,OAAO,IAAI,CAAC;SACb;aAAM,IAAI,QAAQ,EAAE;YACnB,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,6BAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC5E,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACH,oBAAC;AAAD,CAAC,AAnHD,IAmHC;AAnHqB,sCAAa","sourcesContent":["import { API } from '@sentry/core';\nimport {\n Event,\n Response as SentryResponse,\n SentryRequestType,\n Status,\n Transport,\n TransportOptions,\n} from '@sentry/types';\nimport { logger, parseRetryAfterHeader, PromiseBuffer, SentryError } from '@sentry/utils';\n\n/** Base Transport class implementation */\nexport abstract class BaseTransport implements Transport {\n /**\n * @deprecated\n */\n public url: string;\n\n /** Helper to get Sentry API endpoints. */\n protected readonly _api: API;\n\n /** A simple buffer holding all requests. */\n protected readonly _buffer: PromiseBuffer<SentryResponse> = new PromiseBuffer(30);\n\n /** Locks transport after receiving rate limits in a response */\n protected readonly _rateLimits: Record<string, Date> = {};\n\n public constructor(public options: TransportOptions) {\n this._api = new API(this.options.dsn);\n // eslint-disable-next-line deprecation/deprecation\n this.url = this._api.getStoreEndpointWithUrlEncodedAuth();\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(_: Event): PromiseLike<SentryResponse> {\n throw new SentryError('Transport Class has to implement `sendEvent` method');\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike<boolean> {\n return this._buffer.drain(timeout);\n }\n\n /**\n * Handle Sentry repsonse for promise-based transports.\n */\n protected _handleResponse({\n requestType,\n response,\n headers,\n resolve,\n reject,\n }: {\n requestType: SentryRequestType;\n response: Response | XMLHttpRequest;\n headers: Record<string, string | null>;\n resolve: (value?: SentryResponse | PromiseLike<SentryResponse> | null | undefined) => void;\n reject: (reason?: unknown) => void;\n }): void {\n const status = Status.fromHttpCode(response.status);\n /**\n * \"The name is case-insensitive.\"\n * https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n */\n const limited = this._handleRateLimit(headers);\n if (limited) logger.warn(`Too many requests, backing off until: ${this._disabledUntil(requestType)}`);\n\n if (status === Status.Success) {\n resolve({ status });\n return;\n }\n\n reject(response);\n }\n\n /**\n * Gets the time that given category is disabled until for rate limiting\n */\n protected _disabledUntil(category: string): Date {\n return this._rateLimits[category] || this._rateLimits.all;\n }\n\n /**\n * Checks if a category is rate limited\n */\n protected _isRateLimited(category: string): boolean {\n return this._disabledUntil(category) > new Date(Date.now());\n }\n\n /**\n * Sets internal _rateLimits from incoming headers. Returns true if headers contains a non-empty rate limiting header.\n */\n protected _handleRateLimit(headers: Record<string, string | null>): boolean {\n const now = Date.now();\n const rlHeader = headers['x-sentry-rate-limits'];\n const raHeader = headers['retry-after'];\n\n if (rlHeader) {\n // rate limit headers are of the form\n // <header>,<header>,..\n // where each <header> is of the form\n // <retry_after>: <categories>: <scope>: <reason_code>\n // where\n // <retry_after> is a delay in ms\n // <categories> is the event type(s) (error, transaction, etc) being rate limited and is of the form\n // <category>;<category>;...\n // <scope> is what's being limited (org, project, or key) - ignored by SDK\n // <reason_code> is an arbitrary string like \"org_quota\" - ignored by SDK\n for (const limit of rlHeader.trim().split(',')) {\n const parameters = limit.split(':', 2);\n const headerDelay = parseInt(parameters[0], 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n for (const category of parameters[1].split(';')) {\n this._rateLimits[category || 'all'] = new Date(now + delay);\n }\n }\n return true;\n } else if (raHeader) {\n this._rateLimits.all = new Date(now + parseRetryAfterHeader(now, raHeader));\n return true;\n }\n return false;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/transports/fetch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAiB,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAIvC,8BAA8B;AAC9B,qBAAa,cAAe,SAAQ,aAAa;IAC/C;;OAEG;IACI,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC;IAIrD;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC;IAI3D;;;OAGG;IACH,OAAO,CAAC,YAAY;CAyCrB"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/transports/fetch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAiB,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAIvC,8BAA8B;AAC9B,qBAAa,cAAe,SAAQ,aAAa;IAC/C;;OAEG;IACI,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC;IAIrD;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC;IAI3D;;;OAGG;IACH,OAAO,CAAC,YAAY;CA+CrB"}
@@ -59,7 +59,13 @@ var FetchTransport = /** @class */ (function (_super) {
59
59
  'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),
60
60
  'retry-after': response.headers.get('Retry-After'),
61
61
  };
62
- _this._handleResponse({ requestType: sentryRequest.type, response: response, headers: headers, resolve: resolve, reject: reject });
62
+ _this._handleResponse({
63
+ requestType: sentryRequest.type,
64
+ response: response,
65
+ headers: headers,
66
+ resolve: resolve,
67
+ reject: reject,
68
+ });
63
69
  })
64
70
  .catch(reject);
65
71
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/transports/fetch.ts"],"names":[],"mappings":";;AAAA,qCAA4E;AAE5E,uCAAqF;AAErF,+BAAuC;AAEvC,IAAM,MAAM,GAAG,uBAAe,EAAU,CAAC;AAEzC,8BAA8B;AAC9B;IAAoC,0CAAa;IAAjD;;IA4DA,CAAC;IA3DC;;OAEG;IACI,kCAAS,GAAhB,UAAiB,KAAY;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,2BAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACI,oCAAW,GAAlB,UAAmB,OAAgB;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC,6BAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;IAED;;;OAGG;IACK,qCAAY,GAApB,UAAqB,aAA4B,EAAE,eAAgC;QAAnF,iBAwCC;QAvCC,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;YAC3C,OAAO,OAAO,CAAC,MAAM,CAAC;gBACpB,KAAK,EAAE,eAAe;gBACtB,IAAI,EAAE,aAAa,CAAC,IAAI;gBACxB,MAAM,EAAE,2BAAyB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,+BAA4B;gBACpG,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;SACJ;QAED,IAAM,OAAO,GAAgB;YAC3B,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,MAAM,EAAE,MAAM;YACd,wHAAwH;YACxH,4CAA4C;YAC5C,2EAA2E;YAC3E,yDAAyD;YACzD,cAAc,EAAE,CAAC,8BAAsB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAmB;SAC7E,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE;YAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;SACtD;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;YACtC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SACxC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CACrB,IAAI,mBAAW,CAAW,UAAC,OAAO,EAAE,MAAM;YACxC,MAAM;iBACH,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC;iBACjC,IAAI,CAAC,UAAA,QAAQ;gBACZ,IAAM,OAAO,GAAG;oBACd,sBAAsB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;oBACpE,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;iBACnD,CAAC;gBACF,KAAI,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAE,OAAO,SAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;YAChG,CAAC,CAAC;iBACD,KAAK,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IACH,qBAAC;AAAD,CAAC,AA5DD,CAAoC,oBAAa,GA4DhD;AA5DY,wCAAc","sourcesContent":["import { eventToSentryRequest, sessionToSentryRequest } from '@sentry/core';\nimport { Event, Response, SentryRequest, Session } from '@sentry/types';\nimport { getGlobalObject, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\n\nimport { BaseTransport } from './base';\n\nconst global = getGlobalObject<Window>();\n\n/** `fetch` based transport */\nexport class FetchTransport extends BaseTransport {\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): PromiseLike<Response> {\n return this._sendRequest(eventToSentryRequest(event, this._api), event);\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session): PromiseLike<Response> {\n return this._sendRequest(sessionToSentryRequest(session, this._api), session);\n }\n\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n private _sendRequest(sentryRequest: SentryRequest, originalPayload: Event | Session): PromiseLike<Response> {\n if (this._isRateLimited(sentryRequest.type)) {\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n reason: `Transport locked till ${this._disabledUntil(sentryRequest.type)} due to too many requests.`,\n status: 429,\n });\n }\n\n const options: RequestInit = {\n body: sentryRequest.body,\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : '') as ReferrerPolicy,\n };\n if (this.options.fetchParameters !== undefined) {\n Object.assign(options, this.options.fetchParameters);\n }\n if (this.options.headers !== undefined) {\n options.headers = this.options.headers;\n }\n\n return this._buffer.add(\n new SyncPromise<Response>((resolve, reject) => {\n global\n .fetch(sentryRequest.url, options)\n .then(response => {\n const headers = {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n };\n this._handleResponse({ requestType: sentryRequest.type, response, headers, resolve, reject });\n })\n .catch(reject);\n }),\n );\n }\n}\n"]}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/transports/fetch.ts"],"names":[],"mappings":";;AAAA,qCAA4E;AAE5E,uCAAqF;AAErF,+BAAuC;AAEvC,IAAM,MAAM,GAAG,uBAAe,EAAU,CAAC;AAEzC,8BAA8B;AAC9B;IAAoC,0CAAa;IAAjD;;IAkEA,CAAC;IAjEC;;OAEG;IACI,kCAAS,GAAhB,UAAiB,KAAY;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,2BAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACI,oCAAW,GAAlB,UAAmB,OAAgB;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC,6BAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;IAED;;;OAGG;IACK,qCAAY,GAApB,UAAqB,aAA4B,EAAE,eAAgC;QAAnF,iBA8CC;QA7CC,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;YAC3C,OAAO,OAAO,CAAC,MAAM,CAAC;gBACpB,KAAK,EAAE,eAAe;gBACtB,IAAI,EAAE,aAAa,CAAC,IAAI;gBACxB,MAAM,EAAE,2BAAyB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,+BAA4B;gBACpG,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;SACJ;QAED,IAAM,OAAO,GAAgB;YAC3B,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,MAAM,EAAE,MAAM;YACd,wHAAwH;YACxH,4CAA4C;YAC5C,2EAA2E;YAC3E,yDAAyD;YACzD,cAAc,EAAE,CAAC,8BAAsB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAmB;SAC7E,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE;YAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;SACtD;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;YACtC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SACxC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CACrB,IAAI,mBAAW,CAAW,UAAC,OAAO,EAAE,MAAM;YACxC,MAAM;iBACH,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC;iBACjC,IAAI,CAAC,UAAA,QAAQ;gBACZ,IAAM,OAAO,GAAG;oBACd,sBAAsB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;oBACpE,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;iBACnD,CAAC;gBACF,KAAI,CAAC,eAAe,CAAC;oBACnB,WAAW,EAAE,aAAa,CAAC,IAAI;oBAC/B,QAAQ,UAAA;oBACR,OAAO,SAAA;oBACP,OAAO,SAAA;oBACP,MAAM,QAAA;iBACP,CAAC,CAAC;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IACH,qBAAC;AAAD,CAAC,AAlED,CAAoC,oBAAa,GAkEhD;AAlEY,wCAAc","sourcesContent":["import { eventToSentryRequest, sessionToSentryRequest } from '@sentry/core';\nimport { Event, Response, SentryRequest, Session } from '@sentry/types';\nimport { getGlobalObject, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\n\nimport { BaseTransport } from './base';\n\nconst global = getGlobalObject<Window>();\n\n/** `fetch` based transport */\nexport class FetchTransport extends BaseTransport {\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): PromiseLike<Response> {\n return this._sendRequest(eventToSentryRequest(event, this._api), event);\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session): PromiseLike<Response> {\n return this._sendRequest(sessionToSentryRequest(session, this._api), session);\n }\n\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n private _sendRequest(sentryRequest: SentryRequest, originalPayload: Event | Session): PromiseLike<Response> {\n if (this._isRateLimited(sentryRequest.type)) {\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n reason: `Transport locked till ${this._disabledUntil(sentryRequest.type)} due to too many requests.`,\n status: 429,\n });\n }\n\n const options: RequestInit = {\n body: sentryRequest.body,\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : '') as ReferrerPolicy,\n };\n if (this.options.fetchParameters !== undefined) {\n Object.assign(options, this.options.fetchParameters);\n }\n if (this.options.headers !== undefined) {\n options.headers = this.options.headers;\n }\n\n return this._buffer.add(\n new SyncPromise<Response>((resolve, reject) => {\n global\n .fetch(sentryRequest.url, options)\n .then(response => {\n const headers = {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n };\n this._handleResponse({\n requestType: sentryRequest.type,\n response,\n headers,\n resolve,\n reject,\n });\n })\n .catch(reject);\n }),\n );\n }\n}\n"]}
package/dist/version.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export declare const SDK_NAME = "sentry.javascript.browser";
2
- export declare const SDK_VERSION = "5.28.0";
2
+ export declare const SDK_VERSION = "5.30.0";
3
3
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, "__esModule", { value: true });
2
2
  exports.SDK_NAME = 'sentry.javascript.browser';
3
- exports.SDK_VERSION = '5.28.0';
3
+ exports.SDK_VERSION = '5.30.0';
4
4
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";AAAa,QAAA,QAAQ,GAAG,2BAA2B,CAAC;AACvC,QAAA,WAAW,GAAG,QAAQ,CAAC","sourcesContent":["export const SDK_NAME = 'sentry.javascript.browser';\nexport const SDK_VERSION = '5.28.0';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";AAAa,QAAA,QAAQ,GAAG,2BAA2B,CAAC;AACvC,QAAA,WAAW,GAAG,QAAQ,CAAC","sourcesContent":["export const SDK_NAME = 'sentry.javascript.browser';\nexport const SDK_VERSION = '5.30.0';\n"]}
@@ -35,9 +35,12 @@ export declare class GlobalHandlers implements Integration {
35
35
  */
36
36
  private _eventFromIncompleteOnError;
37
37
  /**
38
- * This function creates an Event from an TraceKitStackTrace that has part of it missing.
38
+ * Create an event from a promise rejection where the `reason` is a primitive.
39
+ *
40
+ * @param reason: The `reason` property of the promise rejection
41
+ * @returns An Event object with an appropriate `exception` value
39
42
  */
40
- private _eventFromIncompleteRejection;
43
+ private _eventFromRejectionWithPrimitive;
41
44
  /** JSDoc */
42
45
  private _enhanceEventWithInitialFrame;
43
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"globalhandlers.d.ts","sourceRoot":"","sources":["../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,WAAW,EAAY,MAAM,eAAe,CAAC;AAc7D,YAAY;AACZ,UAAU,0BAA0B;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,sBAAsB;AACtB,qBAAa,cAAe,YAAW,WAAW;IAChD;;OAEG;IACH,OAAc,EAAE,EAAE,MAAM,CAAoB;IAE5C;;OAEG;IACI,IAAI,EAAE,MAAM,CAAqB;IAExC,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD,YAAY;IACZ,OAAO,CAAC,wBAAwB,CAAkB;IAElD,YAAY;IACZ,OAAO,CAAC,qCAAqC,CAAkB;IAE/D,YAAY;gBACO,OAAO,CAAC,EAAE,0BAA0B;IAOvD;;OAEG;IACI,SAAS,IAAI,IAAI;IAcxB,YAAY;IACZ,OAAO,CAAC,4BAA4B;IA6CpC,YAAY;IACZ,OAAO,CAAC,yCAAyC;IAgEjD;;OAEG;IAEH,OAAO,CAAC,2BAA2B;IA6BnC;;OAEG;IAEH,OAAO,CAAC,6BAA6B;IAarC,YAAY;IAEZ,OAAO,CAAC,6BAA6B;CAuBtC"}
1
+ {"version":3,"file":"globalhandlers.d.ts","sourceRoot":"","sources":["../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,WAAW,EAAuB,MAAM,eAAe,CAAC;AAcxE,YAAY;AACZ,UAAU,0BAA0B;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,sBAAsB;AACtB,qBAAa,cAAe,YAAW,WAAW;IAChD;;OAEG;IACH,OAAc,EAAE,EAAE,MAAM,CAAoB;IAE5C;;OAEG;IACI,IAAI,EAAE,MAAM,CAAqB;IAExC,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD,YAAY;IACZ,OAAO,CAAC,wBAAwB,CAAkB;IAElD,YAAY;IACZ,OAAO,CAAC,qCAAqC,CAAkB;IAE/D,YAAY;gBACO,OAAO,CAAC,EAAE,0BAA0B;IAOvD;;OAEG;IACI,SAAS,IAAI,IAAI;IAcxB,YAAY;IACZ,OAAO,CAAC,4BAA4B;IA6CpC,YAAY;IACZ,OAAO,CAAC,yCAAyC;IAgEjD;;OAEG;IAEH,OAAO,CAAC,2BAA2B;IA6BnC;;;;;OAKG;IACH,OAAO,CAAC,gCAAgC;IAcxC,YAAY;IAEZ,OAAO,CAAC,6BAA6B;CAuBtC"}
@@ -105,7 +105,7 @@ var GlobalHandlers = /** @class */ (function () {
105
105
  }
106
106
  var client = currentHub.getClient();
107
107
  var event = isPrimitive(error)
108
- ? _this._eventFromIncompleteRejection(error)
108
+ ? _this._eventFromRejectionWithPrimitive(error)
109
109
  : eventFromUnknownInput(error, undefined, {
110
110
  attachStacktrace: client && client.getOptions().attachStacktrace,
111
111
  rejection: true,
@@ -153,16 +153,19 @@ var GlobalHandlers = /** @class */ (function () {
153
153
  return this._enhanceEventWithInitialFrame(event, url, line, column);
154
154
  };
155
155
  /**
156
- * This function creates an Event from an TraceKitStackTrace that has part of it missing.
156
+ * Create an event from a promise rejection where the `reason` is a primitive.
157
+ *
158
+ * @param reason: The `reason` property of the promise rejection
159
+ * @returns An Event object with an appropriate `exception` value
157
160
  */
158
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
159
- GlobalHandlers.prototype._eventFromIncompleteRejection = function (error) {
161
+ GlobalHandlers.prototype._eventFromRejectionWithPrimitive = function (reason) {
160
162
  return {
161
163
  exception: {
162
164
  values: [
163
165
  {
164
166
  type: 'UnhandledRejection',
165
- value: "Non-Error promise rejection captured with value: " + error,
167
+ // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)
168
+ value: "Non-Error promise rejection captured with value: " + String(reason),
166
169
  },
167
170
  ],
168
171
  },
@@ -1 +1 @@
1
- {"version":3,"file":"globalhandlers.js","sourceRoot":"","sources":["../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, Integration, Severity } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\n/** JSDoc */\ninterface GlobalHandlersIntegrations {\n onerror: boolean;\n onunhandledrejection: boolean;\n}\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /** JSDoc */\n private _onErrorHandlerInstalled: boolean = false;\n\n /** JSDoc */\n private _onUnhandledRejectionHandlerInstalled: boolean = false;\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n\n if (this._options.onerror) {\n logger.log('Global Handler attached: onerror');\n this._installGlobalOnErrorHandler();\n }\n\n if (this._options.onunhandledrejection) {\n logger.log('Global Handler attached: onunhandledrejection');\n this._installGlobalOnUnhandledRejectionHandler();\n }\n }\n\n /** JSDoc */\n private _installGlobalOnErrorHandler(): void {\n if (this._onErrorHandlerInstalled) {\n return;\n }\n\n addInstrumentationHandler({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const error = data.error;\n const currentHub = getCurrentHub();\n const hasIntegration = currentHub.getIntegration(GlobalHandlers);\n const isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return;\n }\n\n const client = currentHub.getClient();\n const event = isPrimitive(error)\n ? this._eventFromIncompleteOnError(data.msg, data.url, data.line, data.column)\n : this._enhanceEventWithInitialFrame(\n eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: false,\n }),\n data.url,\n data.line,\n data.column,\n );\n\n addExceptionMechanism(event, {\n handled: false,\n type: 'onerror',\n });\n\n currentHub.captureEvent(event, {\n originalException: error,\n });\n },\n type: 'error',\n });\n\n this._onErrorHandlerInstalled = true;\n }\n\n /** JSDoc */\n private _installGlobalOnUnhandledRejectionHandler(): void {\n if (this._onUnhandledRejectionHandlerInstalled) {\n return;\n }\n\n addInstrumentationHandler({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: (e: any) => {\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n const currentHub = getCurrentHub();\n const hasIntegration = currentHub.getIntegration(GlobalHandlers);\n const isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return true;\n }\n\n const client = currentHub.getClient();\n const event = isPrimitive(error)\n ? this._eventFromIncompleteRejection(error)\n : eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: true,\n });\n\n event.level = Severity.Error;\n\n addExceptionMechanism(event, {\n handled: false,\n type: 'onunhandledrejection',\n });\n\n currentHub.captureEvent(event, {\n originalException: error,\n });\n\n return;\n },\n type: 'unhandledrejection',\n });\n\n this._onUnhandledRejectionHandlerInstalled = true;\n }\n\n /**\n * This function creates a stack from an old, error-less onerror handler.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name;\n\n if (isString(message)) {\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name || 'Error',\n value: message,\n },\n ],\n },\n };\n\n return this._enhanceEventWithInitialFrame(event, url, line, column);\n }\n\n /**\n * This function creates an Event from an TraceKitStackTrace that has part of it missing.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _eventFromIncompleteRejection(error: any): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n value: `Non-Error promise rejection captured with value: ${error}`,\n },\n ],\n },\n };\n }\n\n /** JSDoc */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].stacktrace = event.exception.values[0].stacktrace || {};\n event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames || [];\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n if (event.exception.values[0].stacktrace.frames.length === 0) {\n event.exception.values[0].stacktrace.frames.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n }\n}\n"]}
1
+ {"version":3,"file":"globalhandlers.js","sourceRoot":"","sources":["../../src/integrations/globalhandlers.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, Integration, Primitive, Severity } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\n/** JSDoc */\ninterface GlobalHandlersIntegrations {\n onerror: boolean;\n onunhandledrejection: boolean;\n}\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /** JSDoc */\n private _onErrorHandlerInstalled: boolean = false;\n\n /** JSDoc */\n private _onUnhandledRejectionHandlerInstalled: boolean = false;\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n\n if (this._options.onerror) {\n logger.log('Global Handler attached: onerror');\n this._installGlobalOnErrorHandler();\n }\n\n if (this._options.onunhandledrejection) {\n logger.log('Global Handler attached: onunhandledrejection');\n this._installGlobalOnUnhandledRejectionHandler();\n }\n }\n\n /** JSDoc */\n private _installGlobalOnErrorHandler(): void {\n if (this._onErrorHandlerInstalled) {\n return;\n }\n\n addInstrumentationHandler({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const error = data.error;\n const currentHub = getCurrentHub();\n const hasIntegration = currentHub.getIntegration(GlobalHandlers);\n const isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return;\n }\n\n const client = currentHub.getClient();\n const event = isPrimitive(error)\n ? this._eventFromIncompleteOnError(data.msg, data.url, data.line, data.column)\n : this._enhanceEventWithInitialFrame(\n eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: false,\n }),\n data.url,\n data.line,\n data.column,\n );\n\n addExceptionMechanism(event, {\n handled: false,\n type: 'onerror',\n });\n\n currentHub.captureEvent(event, {\n originalException: error,\n });\n },\n type: 'error',\n });\n\n this._onErrorHandlerInstalled = true;\n }\n\n /** JSDoc */\n private _installGlobalOnUnhandledRejectionHandler(): void {\n if (this._onUnhandledRejectionHandlerInstalled) {\n return;\n }\n\n addInstrumentationHandler({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: (e: any) => {\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n const currentHub = getCurrentHub();\n const hasIntegration = currentHub.getIntegration(GlobalHandlers);\n const isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return true;\n }\n\n const client = currentHub.getClient();\n const event = isPrimitive(error)\n ? this._eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: true,\n });\n\n event.level = Severity.Error;\n\n addExceptionMechanism(event, {\n handled: false,\n type: 'onunhandledrejection',\n });\n\n currentHub.captureEvent(event, {\n originalException: error,\n });\n\n return;\n },\n type: 'unhandledrejection',\n });\n\n this._onUnhandledRejectionHandlerInstalled = true;\n }\n\n /**\n * This function creates a stack from an old, error-less onerror handler.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name;\n\n if (isString(message)) {\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name || 'Error',\n value: message,\n },\n ],\n },\n };\n\n return this._enhanceEventWithInitialFrame(event, url, line, column);\n }\n\n /**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\n private _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n }\n\n /** JSDoc */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].stacktrace = event.exception.values[0].stacktrace || {};\n event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames || [];\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n if (event.exception.values[0].stacktrace.frames.length === 0) {\n event.exception.values[0].stacktrace.frames.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/transports/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EACL,KAAK,EACL,QAAQ,IAAI,cAAc,EAC1B,iBAAiB,EAEjB,SAAS,EACT,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAiC,aAAa,EAAe,MAAM,eAAe,CAAC;AAE1F,0CAA0C;AAC1C,8BAAsB,aAAc,YAAW,SAAS;IAe5B,OAAO,EAAE,gBAAgB;IAdnD;;OAEG;IACI,GAAG,EAAE,MAAM,CAAC;IAEnB,0CAA0C;IAC1C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IAE7B,4CAA4C;IAC5C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAyB;IAElF,gEAAgE;IAChE,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAM;gBAEhC,OAAO,EAAE,gBAAgB;IAMnD;;OAEG;IACI,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC;IAIvD;;OAEG;IACI,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC;IAIpD;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,EACxB,WAAW,EACX,QAAQ,EACR,OAAO,EACP,OAAO,EACP,MAAM,GACP,EAAE;QACD,WAAW,EAAE,iBAAiB,CAAC;QAC/B,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAAC;QACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;QACvC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;QAC3F,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;KACpC,GAAG,IAAI;IAiBR;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIhD;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInD;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,OAAO;CAqB5E"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/transports/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EACL,KAAK,EACL,QAAQ,IAAI,cAAc,EAC1B,iBAAiB,EAEjB,SAAS,EACT,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAiC,aAAa,EAAe,MAAM,eAAe,CAAC;AAE1F,0CAA0C;AAC1C,8BAAsB,aAAc,YAAW,SAAS;IAe5B,OAAO,EAAE,gBAAgB;IAdnD;;OAEG;IACI,GAAG,EAAE,MAAM,CAAC;IAEnB,0CAA0C;IAC1C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IAE7B,4CAA4C;IAC5C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAyB;IAElF,gEAAgE;IAChE,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAM;gBAEhC,OAAO,EAAE,gBAAgB;IAMnD;;OAEG;IACI,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC;IAIvD;;OAEG;IACI,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC;IAIpD;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,EACxB,WAAW,EACX,QAAQ,EACR,OAAO,EACP,OAAO,EACP,MAAM,GACP,EAAE;QACD,WAAW,EAAE,iBAAiB,CAAC;QAC/B,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAAC;QACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;QACvC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;QAC3F,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;KACpC,GAAG,IAAI;IAiBR;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIhD;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInD;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,OAAO;CA+B5E"}
@@ -38,7 +38,7 @@ var BaseTransport = /** @class */ (function () {
38
38
  */
39
39
  var limited = this._handleRateLimit(headers);
40
40
  if (limited)
41
- logger.warn("Too many requests, backing off till: " + this._disabledUntil(requestType));
41
+ logger.warn("Too many requests, backing off until: " + this._disabledUntil(requestType));
42
42
  if (status === Status.Success) {
43
43
  resolve({ status: status });
44
44
  return;
@@ -67,6 +67,16 @@ var BaseTransport = /** @class */ (function () {
67
67
  var raHeader = headers['retry-after'];
68
68
  if (rlHeader) {
69
69
  try {
70
+ // rate limit headers are of the form
71
+ // <header>,<header>,..
72
+ // where each <header> is of the form
73
+ // <retry_after>: <categories>: <scope>: <reason_code>
74
+ // where
75
+ // <retry_after> is a delay in ms
76
+ // <categories> is the event type(s) (error, transaction, etc) being rate limited and is of the form
77
+ // <category>;<category>;...
78
+ // <scope> is what's being limited (org, project, or key) - ignored by SDK
79
+ // <reason_code> is an arbitrary string like "org_quota" - ignored by SDK
70
80
  for (var _c = __values(rlHeader.trim().split(',')), _d = _c.next(); !_d.done; _d = _c.next()) {
71
81
  var limit = _d.value;
72
82
  var parameters = limit.split(':', 2);
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/transports/base.ts"],"names":[],"mappings":"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","sourcesContent":["import { API } from '@sentry/core';\nimport {\n Event,\n Response as SentryResponse,\n SentryRequestType,\n Status,\n Transport,\n TransportOptions,\n} from '@sentry/types';\nimport { logger, parseRetryAfterHeader, PromiseBuffer, SentryError } from '@sentry/utils';\n\n/** Base Transport class implementation */\nexport abstract class BaseTransport implements Transport {\n /**\n * @deprecated\n */\n public url: string;\n\n /** Helper to get Sentry API endpoints. */\n protected readonly _api: API;\n\n /** A simple buffer holding all requests. */\n protected readonly _buffer: PromiseBuffer<SentryResponse> = new PromiseBuffer(30);\n\n /** Locks transport after receiving rate limits in a response */\n protected readonly _rateLimits: Record<string, Date> = {};\n\n public constructor(public options: TransportOptions) {\n this._api = new API(this.options.dsn);\n // eslint-disable-next-line deprecation/deprecation\n this.url = this._api.getStoreEndpointWithUrlEncodedAuth();\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(_: Event): PromiseLike<SentryResponse> {\n throw new SentryError('Transport Class has to implement `sendEvent` method');\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike<boolean> {\n return this._buffer.drain(timeout);\n }\n\n /**\n * Handle Sentry repsonse for promise-based transports.\n */\n protected _handleResponse({\n requestType,\n response,\n headers,\n resolve,\n reject,\n }: {\n requestType: SentryRequestType;\n response: Response | XMLHttpRequest;\n headers: Record<string, string | null>;\n resolve: (value?: SentryResponse | PromiseLike<SentryResponse> | null | undefined) => void;\n reject: (reason?: unknown) => void;\n }): void {\n const status = Status.fromHttpCode(response.status);\n /**\n * \"The name is case-insensitive.\"\n * https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n */\n const limited = this._handleRateLimit(headers);\n if (limited) logger.warn(`Too many requests, backing off till: ${this._disabledUntil(requestType)}`);\n\n if (status === Status.Success) {\n resolve({ status });\n return;\n }\n\n reject(response);\n }\n\n /**\n * Gets the time that given category is disabled until for rate limiting\n */\n protected _disabledUntil(category: string): Date {\n return this._rateLimits[category] || this._rateLimits.all;\n }\n\n /**\n * Checks if a category is rate limited\n */\n protected _isRateLimited(category: string): boolean {\n return this._disabledUntil(category) > new Date(Date.now());\n }\n\n /**\n * Sets internal _rateLimits from incoming headers. Returns true if headers contains a non-empty rate limiting header.\n */\n protected _handleRateLimit(headers: Record<string, string | null>): boolean {\n const now = Date.now();\n const rlHeader = headers['x-sentry-rate-limits'];\n const raHeader = headers['retry-after'];\n\n if (rlHeader) {\n for (const limit of rlHeader.trim().split(',')) {\n const parameters = limit.split(':', 2);\n const headerDelay = parseInt(parameters[0], 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n for (const category of parameters[1].split(';')) {\n this._rateLimits[category || 'all'] = new Date(now + delay);\n }\n }\n return true;\n } else if (raHeader) {\n this._rateLimits.all = new Date(now + parseRetryAfterHeader(now, raHeader));\n return true;\n }\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/transports/base.ts"],"names":[],"mappings":"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","sourcesContent":["import { API } from '@sentry/core';\nimport {\n Event,\n Response as SentryResponse,\n SentryRequestType,\n Status,\n Transport,\n TransportOptions,\n} from '@sentry/types';\nimport { logger, parseRetryAfterHeader, PromiseBuffer, SentryError } from '@sentry/utils';\n\n/** Base Transport class implementation */\nexport abstract class BaseTransport implements Transport {\n /**\n * @deprecated\n */\n public url: string;\n\n /** Helper to get Sentry API endpoints. */\n protected readonly _api: API;\n\n /** A simple buffer holding all requests. */\n protected readonly _buffer: PromiseBuffer<SentryResponse> = new PromiseBuffer(30);\n\n /** Locks transport after receiving rate limits in a response */\n protected readonly _rateLimits: Record<string, Date> = {};\n\n public constructor(public options: TransportOptions) {\n this._api = new API(this.options.dsn);\n // eslint-disable-next-line deprecation/deprecation\n this.url = this._api.getStoreEndpointWithUrlEncodedAuth();\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(_: Event): PromiseLike<SentryResponse> {\n throw new SentryError('Transport Class has to implement `sendEvent` method');\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike<boolean> {\n return this._buffer.drain(timeout);\n }\n\n /**\n * Handle Sentry repsonse for promise-based transports.\n */\n protected _handleResponse({\n requestType,\n response,\n headers,\n resolve,\n reject,\n }: {\n requestType: SentryRequestType;\n response: Response | XMLHttpRequest;\n headers: Record<string, string | null>;\n resolve: (value?: SentryResponse | PromiseLike<SentryResponse> | null | undefined) => void;\n reject: (reason?: unknown) => void;\n }): void {\n const status = Status.fromHttpCode(response.status);\n /**\n * \"The name is case-insensitive.\"\n * https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n */\n const limited = this._handleRateLimit(headers);\n if (limited) logger.warn(`Too many requests, backing off until: ${this._disabledUntil(requestType)}`);\n\n if (status === Status.Success) {\n resolve({ status });\n return;\n }\n\n reject(response);\n }\n\n /**\n * Gets the time that given category is disabled until for rate limiting\n */\n protected _disabledUntil(category: string): Date {\n return this._rateLimits[category] || this._rateLimits.all;\n }\n\n /**\n * Checks if a category is rate limited\n */\n protected _isRateLimited(category: string): boolean {\n return this._disabledUntil(category) > new Date(Date.now());\n }\n\n /**\n * Sets internal _rateLimits from incoming headers. Returns true if headers contains a non-empty rate limiting header.\n */\n protected _handleRateLimit(headers: Record<string, string | null>): boolean {\n const now = Date.now();\n const rlHeader = headers['x-sentry-rate-limits'];\n const raHeader = headers['retry-after'];\n\n if (rlHeader) {\n // rate limit headers are of the form\n // <header>,<header>,..\n // where each <header> is of the form\n // <retry_after>: <categories>: <scope>: <reason_code>\n // where\n // <retry_after> is a delay in ms\n // <categories> is the event type(s) (error, transaction, etc) being rate limited and is of the form\n // <category>;<category>;...\n // <scope> is what's being limited (org, project, or key) - ignored by SDK\n // <reason_code> is an arbitrary string like \"org_quota\" - ignored by SDK\n for (const limit of rlHeader.trim().split(',')) {\n const parameters = limit.split(':', 2);\n const headerDelay = parseInt(parameters[0], 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n for (const category of parameters[1].split(';')) {\n this._rateLimits[category || 'all'] = new Date(now + delay);\n }\n }\n return true;\n } else if (raHeader) {\n this._rateLimits.all = new Date(now + parseRetryAfterHeader(now, raHeader));\n return true;\n }\n return false;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/transports/fetch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAiB,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAIvC,8BAA8B;AAC9B,qBAAa,cAAe,SAAQ,aAAa;IAC/C;;OAEG;IACI,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC;IAIrD;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC;IAI3D;;;OAGG;IACH,OAAO,CAAC,YAAY;CAyCrB"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/transports/fetch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAiB,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAIvC,8BAA8B;AAC9B,qBAAa,cAAe,SAAQ,aAAa;IAC/C;;OAEG;IACI,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC;IAIrD;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC;IAI3D;;;OAGG;IACH,OAAO,CAAC,YAAY;CA+CrB"}
@@ -58,7 +58,13 @@ var FetchTransport = /** @class */ (function (_super) {
58
58
  'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),
59
59
  'retry-after': response.headers.get('Retry-After'),
60
60
  };
61
- _this._handleResponse({ requestType: sentryRequest.type, response: response, headers: headers, resolve: resolve, reject: reject });
61
+ _this._handleResponse({
62
+ requestType: sentryRequest.type,
63
+ response: response,
64
+ headers: headers,
65
+ resolve: resolve,
66
+ reject: reject,
67
+ });
62
68
  })
63
69
  .catch(reject);
64
70
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/transports/fetch.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAErF,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,IAAM,MAAM,GAAG,eAAe,EAAU,CAAC;AAEzC,8BAA8B;AAC9B;IAAoC,kCAAa;IAAjD;;IA4DA,CAAC;IA3DC;;OAEG;IACI,kCAAS,GAAhB,UAAiB,KAAY;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACI,oCAAW,GAAlB,UAAmB,OAAgB;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;IAED;;;OAGG;IACK,qCAAY,GAApB,UAAqB,aAA4B,EAAE,eAAgC;QAAnF,iBAwCC;QAvCC,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;YAC3C,OAAO,OAAO,CAAC,MAAM,CAAC;gBACpB,KAAK,EAAE,eAAe;gBACtB,IAAI,EAAE,aAAa,CAAC,IAAI;gBACxB,MAAM,EAAE,2BAAyB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,+BAA4B;gBACpG,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;SACJ;QAED,IAAM,OAAO,GAAgB;YAC3B,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,MAAM,EAAE,MAAM;YACd,wHAAwH;YACxH,4CAA4C;YAC5C,2EAA2E;YAC3E,yDAAyD;YACzD,cAAc,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAmB;SAC7E,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE;YAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;SACtD;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;YACtC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SACxC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CACrB,IAAI,WAAW,CAAW,UAAC,OAAO,EAAE,MAAM;YACxC,MAAM;iBACH,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC;iBACjC,IAAI,CAAC,UAAA,QAAQ;gBACZ,IAAM,OAAO,GAAG;oBACd,sBAAsB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;oBACpE,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;iBACnD,CAAC;gBACF,KAAI,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAE,OAAO,SAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;YAChG,CAAC,CAAC;iBACD,KAAK,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IACH,qBAAC;AAAD,CAAC,AA5DD,CAAoC,aAAa,GA4DhD","sourcesContent":["import { eventToSentryRequest, sessionToSentryRequest } from '@sentry/core';\nimport { Event, Response, SentryRequest, Session } from '@sentry/types';\nimport { getGlobalObject, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\n\nimport { BaseTransport } from './base';\n\nconst global = getGlobalObject<Window>();\n\n/** `fetch` based transport */\nexport class FetchTransport extends BaseTransport {\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): PromiseLike<Response> {\n return this._sendRequest(eventToSentryRequest(event, this._api), event);\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session): PromiseLike<Response> {\n return this._sendRequest(sessionToSentryRequest(session, this._api), session);\n }\n\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n private _sendRequest(sentryRequest: SentryRequest, originalPayload: Event | Session): PromiseLike<Response> {\n if (this._isRateLimited(sentryRequest.type)) {\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n reason: `Transport locked till ${this._disabledUntil(sentryRequest.type)} due to too many requests.`,\n status: 429,\n });\n }\n\n const options: RequestInit = {\n body: sentryRequest.body,\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : '') as ReferrerPolicy,\n };\n if (this.options.fetchParameters !== undefined) {\n Object.assign(options, this.options.fetchParameters);\n }\n if (this.options.headers !== undefined) {\n options.headers = this.options.headers;\n }\n\n return this._buffer.add(\n new SyncPromise<Response>((resolve, reject) => {\n global\n .fetch(sentryRequest.url, options)\n .then(response => {\n const headers = {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n };\n this._handleResponse({ requestType: sentryRequest.type, response, headers, resolve, reject });\n })\n .catch(reject);\n }),\n );\n }\n}\n"]}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/transports/fetch.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAErF,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,IAAM,MAAM,GAAG,eAAe,EAAU,CAAC;AAEzC,8BAA8B;AAC9B;IAAoC,kCAAa;IAAjD;;IAkEA,CAAC;IAjEC;;OAEG;IACI,kCAAS,GAAhB,UAAiB,KAAY;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACI,oCAAW,GAAlB,UAAmB,OAAgB;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;IAED;;;OAGG;IACK,qCAAY,GAApB,UAAqB,aAA4B,EAAE,eAAgC;QAAnF,iBA8CC;QA7CC,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;YAC3C,OAAO,OAAO,CAAC,MAAM,CAAC;gBACpB,KAAK,EAAE,eAAe;gBACtB,IAAI,EAAE,aAAa,CAAC,IAAI;gBACxB,MAAM,EAAE,2BAAyB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,+BAA4B;gBACpG,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;SACJ;QAED,IAAM,OAAO,GAAgB;YAC3B,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,MAAM,EAAE,MAAM;YACd,wHAAwH;YACxH,4CAA4C;YAC5C,2EAA2E;YAC3E,yDAAyD;YACzD,cAAc,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAmB;SAC7E,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE;YAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;SACtD;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;YACtC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SACxC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CACrB,IAAI,WAAW,CAAW,UAAC,OAAO,EAAE,MAAM;YACxC,MAAM;iBACH,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC;iBACjC,IAAI,CAAC,UAAA,QAAQ;gBACZ,IAAM,OAAO,GAAG;oBACd,sBAAsB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;oBACpE,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;iBACnD,CAAC;gBACF,KAAI,CAAC,eAAe,CAAC;oBACnB,WAAW,EAAE,aAAa,CAAC,IAAI;oBAC/B,QAAQ,UAAA;oBACR,OAAO,SAAA;oBACP,OAAO,SAAA;oBACP,MAAM,QAAA;iBACP,CAAC,CAAC;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IACH,qBAAC;AAAD,CAAC,AAlED,CAAoC,aAAa,GAkEhD","sourcesContent":["import { eventToSentryRequest, sessionToSentryRequest } from '@sentry/core';\nimport { Event, Response, SentryRequest, Session } from '@sentry/types';\nimport { getGlobalObject, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\n\nimport { BaseTransport } from './base';\n\nconst global = getGlobalObject<Window>();\n\n/** `fetch` based transport */\nexport class FetchTransport extends BaseTransport {\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): PromiseLike<Response> {\n return this._sendRequest(eventToSentryRequest(event, this._api), event);\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session): PromiseLike<Response> {\n return this._sendRequest(sessionToSentryRequest(session, this._api), session);\n }\n\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n private _sendRequest(sentryRequest: SentryRequest, originalPayload: Event | Session): PromiseLike<Response> {\n if (this._isRateLimited(sentryRequest.type)) {\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n reason: `Transport locked till ${this._disabledUntil(sentryRequest.type)} due to too many requests.`,\n status: 429,\n });\n }\n\n const options: RequestInit = {\n body: sentryRequest.body,\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : '') as ReferrerPolicy,\n };\n if (this.options.fetchParameters !== undefined) {\n Object.assign(options, this.options.fetchParameters);\n }\n if (this.options.headers !== undefined) {\n options.headers = this.options.headers;\n }\n\n return this._buffer.add(\n new SyncPromise<Response>((resolve, reject) => {\n global\n .fetch(sentryRequest.url, options)\n .then(response => {\n const headers = {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n };\n this._handleResponse({\n requestType: sentryRequest.type,\n response,\n headers,\n resolve,\n reject,\n });\n })\n .catch(reject);\n }),\n );\n }\n}\n"]}
package/esm/version.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export declare const SDK_NAME = "sentry.javascript.browser";
2
- export declare const SDK_VERSION = "5.28.0";
2
+ export declare const SDK_VERSION = "5.30.0";
3
3
  //# sourceMappingURL=version.d.ts.map
package/esm/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  export var SDK_NAME = 'sentry.javascript.browser';
2
- export var SDK_VERSION = '5.28.0';
2
+ export var SDK_VERSION = '5.30.0';
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,QAAQ,GAAG,2BAA2B,CAAC;AACpD,MAAM,CAAC,IAAM,WAAW,GAAG,QAAQ,CAAC","sourcesContent":["export const SDK_NAME = 'sentry.javascript.browser';\nexport const SDK_VERSION = '5.28.0';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,QAAQ,GAAG,2BAA2B,CAAC;AACpD,MAAM,CAAC,IAAM,WAAW,GAAG,QAAQ,CAAC","sourcesContent":["export const SDK_NAME = 'sentry.javascript.browser';\nexport const SDK_VERSION = '5.30.0';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentry/browser",
3
- "version": "5.28.0",
3
+ "version": "5.30.0",
4
4
  "description": "Official Sentry SDK for browsers",
5
5
  "repository": "git://github.com/getsentry/sentry-javascript.git",
6
6
  "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser",
@@ -16,13 +16,13 @@
16
16
  "access": "public"
17
17
  },
18
18
  "dependencies": {
19
- "@sentry/core": "5.28.0",
20
- "@sentry/types": "5.28.0",
21
- "@sentry/utils": "5.28.0",
19
+ "@sentry/core": "5.30.0",
20
+ "@sentry/types": "5.30.0",
21
+ "@sentry/utils": "5.30.0",
22
22
  "tslib": "^1.9.3"
23
23
  },
24
24
  "devDependencies": {
25
- "@sentry-internal/eslint-config-sdk": "5.28.0",
25
+ "@sentry-internal/eslint-config-sdk": "5.30.0",
26
26
  "@types/eslint": "^7.2.0",
27
27
  "@types/md5": "2.1.33",
28
28
  "btoa": "^1.2.1",