@sentry/browser 10.5.0 → 10.7.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.
@@ -13,7 +13,7 @@ const INTEGRATION_NAME = 'WebWorker';
13
13
  * any messages from the worker. Otherwise, your message handlers will receive
14
14
  * messages from the Sentry SDK which you need to ignore.
15
15
  *
16
- * This integration only has an effect, if you call `Sentry.registerWorker(self)`
16
+ * This integration only has an effect, if you call `Sentry.registerWebWorker(self)`
17
17
  * from within the worker(s) you're adding to the integration.
18
18
  *
19
19
  * Given that you want to initialize the SDK as early as possible, you most likely
@@ -101,6 +101,16 @@ function listenForSentryDebugIdMessages(worker) {
101
101
  });
102
102
  }
103
103
 
104
+ /**
105
+ * Minimal interface for DedicatedWorkerGlobalScope, only requiring the postMessage method.
106
+ * (which is the only thing we need from the worker's global object)
107
+ *
108
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope
109
+ *
110
+ * We can't use the actual type because it breaks everyone who doesn't have {"lib": ["WebWorker"]}
111
+ * but uses {"skipLibCheck": true} in their tsconfig.json.
112
+ */
113
+
104
114
  /**
105
115
  * Use this function to register the worker with the Sentry SDK.
106
116
  *
@@ -109,7 +119,7 @@ function listenForSentryDebugIdMessages(worker) {
109
119
  * import * as Sentry from '@sentry/<your-sdk>';
110
120
  *
111
121
  * // Do this as early as possible in your worker.
112
- * Sentry.registerWorker({ self });
122
+ * Sentry.registerWebWorker({ self });
113
123
  *
114
124
  * // continue setting up your worker
115
125
  * self.postMessage(...)
@@ -1 +1 @@
1
- {"version":3,"file":"webWorker.js","sources":["../../../../src/integrations/webWorker.ts"],"sourcesContent":["import type { Integration, IntegrationFn } from '@sentry/core';\nimport { debug, defineIntegration, isPlainObject } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\nexport const INTEGRATION_NAME = 'WebWorker';\n\ninterface WebWorkerMessage {\n _sentryMessage: boolean;\n _sentryDebugIds?: Record<string, string>;\n}\n\ninterface WebWorkerIntegrationOptions {\n worker: Worker | Array<Worker>;\n}\n\ninterface WebWorkerIntegration extends Integration {\n addWorker: (worker: Worker) => void;\n}\n\n/**\n * Use this integration to set up Sentry with web workers.\n *\n * IMPORTANT: This integration must be added **before** you start listening to\n * any messages from the worker. Otherwise, your message handlers will receive\n * messages from the Sentry SDK which you need to ignore.\n *\n * This integration only has an effect, if you call `Sentry.registerWorker(self)`\n * from within the worker(s) you're adding to the integration.\n *\n * Given that you want to initialize the SDK as early as possible, you most likely\n * want to add this integration **after** initializing the SDK:\n *\n * @example:\n * ```ts filename={main.js}\n * import * as Sentry from '@sentry/<your-sdk>';\n *\n * // some time earlier:\n * Sentry.init(...)\n *\n * // 1. Initialize the worker\n * const worker = new Worker(new URL('./worker.ts', import.meta.url));\n *\n * // 2. Add the integration\n * const webWorkerIntegration = Sentry.webWorkerIntegration({ worker });\n * Sentry.addIntegration(webWorkerIntegration);\n *\n * // 3. Register message listeners on the worker\n * worker.addEventListener('message', event => {\n * // ...\n * });\n * ```\n *\n * If you initialize multiple workers at the same time, you can also pass an array of workers\n * to the integration:\n *\n * ```ts filename={main.js}\n * const webWorkerIntegration = Sentry.webWorkerIntegration({ worker: [worker1, worker2] });\n * Sentry.addIntegration(webWorkerIntegration);\n * ```\n *\n * If you have any additional workers that you initialize at a later point,\n * you can add them to the integration as follows:\n *\n * ```ts filename={main.js}\n * const webWorkerIntegration = Sentry.webWorkerIntegration({ worker: worker1 });\n * Sentry.addIntegration(webWorkerIntegration);\n *\n * // sometime later:\n * webWorkerIntegration.addWorker(worker2);\n * ```\n *\n * Of course, you can also directly add the integration in Sentry.init:\n * ```ts filename={main.js}\n * import * as Sentry from '@sentry/<your-sdk>';\n *\n * // 1. Initialize the worker\n * const worker = new Worker(new URL('./worker.ts', import.meta.url));\n *\n * // 2. Initialize the SDK\n * Sentry.init({\n * integrations: [Sentry.webWorkerIntegration({ worker })]\n * });\n *\n * // 3. Register message listeners on the worker\n * worker.addEventListener('message', event => {\n * // ...\n * });\n * ```\n *\n * @param options {WebWorkerIntegrationOptions} Integration options:\n * - `worker`: The worker instance.\n */\nexport const webWorkerIntegration = defineIntegration(({ worker }: WebWorkerIntegrationOptions) => ({\n name: INTEGRATION_NAME,\n setupOnce: () => {\n (Array.isArray(worker) ? worker : [worker]).forEach(w => listenForSentryDebugIdMessages(w));\n },\n addWorker: (worker: Worker) => listenForSentryDebugIdMessages(worker),\n})) as IntegrationFn<WebWorkerIntegration>;\n\nfunction listenForSentryDebugIdMessages(worker: Worker): void {\n worker.addEventListener('message', event => {\n if (isSentryDebugIdMessage(event.data)) {\n event.stopImmediatePropagation(); // other listeners should not receive this message\n DEBUG_BUILD && debug.log('Sentry debugId web worker message received', event.data);\n WINDOW._sentryDebugIds = {\n ...event.data._sentryDebugIds,\n // debugIds of the main thread have precedence over the worker's in case of a collision.\n ...WINDOW._sentryDebugIds,\n };\n }\n });\n}\n\ninterface RegisterWebWorkerOptions {\n self: Worker & { _sentryDebugIds?: Record<string, string> };\n}\n\n/**\n * Use this function to register the worker with the Sentry SDK.\n *\n * @example\n * ```ts filename={worker.js}\n * import * as Sentry from '@sentry/<your-sdk>';\n *\n * // Do this as early as possible in your worker.\n * Sentry.registerWorker({ self });\n *\n * // continue setting up your worker\n * self.postMessage(...)\n * ```\n * @param options {RegisterWebWorkerOptions} Integration options:\n * - `self`: The worker instance you're calling this function from (self).\n */\nexport function registerWebWorker({ self }: RegisterWebWorkerOptions): void {\n self.postMessage({\n _sentryMessage: true,\n _sentryDebugIds: self._sentryDebugIds ?? undefined,\n });\n}\n\nfunction isSentryDebugIdMessage(eventData: unknown): eventData is WebWorkerMessage {\n return (\n isPlainObject(eventData) &&\n eventData._sentryMessage === true &&\n '_sentryDebugIds' in eventData &&\n (isPlainObject(eventData._sentryDebugIds) || eventData._sentryDebugIds === undefined)\n );\n}\n"],"names":["defineIntegration","DEBUG_BUILD","debug","WINDOW","isPlainObject"],"mappings":";;;;;;AAKO,MAAM,gBAAA,GAAmB;;AAehC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,oBAAA,GAAuBA,sBAAiB,CAAC,CAAC,EAAE,MAAA,EAAQ,MAAmC;AACpG,EAAE,IAAI,EAAE,gBAAgB;AACxB,EAAE,SAAS,EAAE,MAAM;AACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAA,GAAI,MAAA,GAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA,IAAK,8BAA8B,CAAC,CAAC,CAAC,CAAC;AAC/F,GAAG;AACH,EAAE,SAAS,EAAE,CAAC,MAAM,KAAa,8BAA8B,CAAC,MAAM,CAAC;AACvE,CAAC,CAAC,CAAA;;AAEF,SAAS,8BAA8B,CAAC,MAAM,EAAgB;AAC9D,EAAE,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS;AAC9C,IAAI,IAAI,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAC5C,MAAM,KAAK,CAAC,wBAAwB,EAAE,CAAA;AACtC,MAAMC,sBAAA,IAAeC,UAAK,CAAC,GAAG,CAAC,4CAA4C,EAAE,KAAK,CAAC,IAAI,CAAC;AACxF,MAAMC,cAAM,CAAC,eAAA,GAAkB;AAC/B,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe;AACrC;AACA,QAAQ,GAAGA,cAAM,CAAC,eAAe;AACjC,OAAO;AACP;AACA,GAAG,CAAC;AACJ;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,EAAE,IAAA,EAAM,EAAkC;AAC5E,EAAE,IAAI,CAAC,WAAW,CAAC;AACnB,IAAI,cAAc,EAAE,IAAI;AACxB,IAAI,eAAe,EAAE,IAAI,CAAC,eAAA,IAAmB,SAAS;AACtD,GAAG,CAAC;AACJ;;AAEA,SAAS,sBAAsB,CAAC,SAAS,EAA0C;AACnF,EAAE;AACF,IAAIC,kBAAa,CAAC,SAAS,CAAA;AAC3B,IAAI,SAAS,CAAC,cAAA,KAAmB,IAAA;AACjC,IAAI,iBAAA,IAAqB,SAAA;AACzB,KAAKA,kBAAa,CAAC,SAAS,CAAC,eAAe,CAAA,IAAK,SAAS,CAAC,eAAA,KAAoB,SAAS;AACxF;AACA;;;;;;"}
1
+ {"version":3,"file":"webWorker.js","sources":["../../../../src/integrations/webWorker.ts"],"sourcesContent":["import type { Integration, IntegrationFn } from '@sentry/core';\nimport { debug, defineIntegration, isPlainObject } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\nexport const INTEGRATION_NAME = 'WebWorker';\n\ninterface WebWorkerMessage {\n _sentryMessage: boolean;\n _sentryDebugIds?: Record<string, string>;\n}\n\ninterface WebWorkerIntegrationOptions {\n worker: Worker | Array<Worker>;\n}\n\ninterface WebWorkerIntegration extends Integration {\n addWorker: (worker: Worker) => void;\n}\n\n/**\n * Use this integration to set up Sentry with web workers.\n *\n * IMPORTANT: This integration must be added **before** you start listening to\n * any messages from the worker. Otherwise, your message handlers will receive\n * messages from the Sentry SDK which you need to ignore.\n *\n * This integration only has an effect, if you call `Sentry.registerWebWorker(self)`\n * from within the worker(s) you're adding to the integration.\n *\n * Given that you want to initialize the SDK as early as possible, you most likely\n * want to add this integration **after** initializing the SDK:\n *\n * @example:\n * ```ts filename={main.js}\n * import * as Sentry from '@sentry/<your-sdk>';\n *\n * // some time earlier:\n * Sentry.init(...)\n *\n * // 1. Initialize the worker\n * const worker = new Worker(new URL('./worker.ts', import.meta.url));\n *\n * // 2. Add the integration\n * const webWorkerIntegration = Sentry.webWorkerIntegration({ worker });\n * Sentry.addIntegration(webWorkerIntegration);\n *\n * // 3. Register message listeners on the worker\n * worker.addEventListener('message', event => {\n * // ...\n * });\n * ```\n *\n * If you initialize multiple workers at the same time, you can also pass an array of workers\n * to the integration:\n *\n * ```ts filename={main.js}\n * const webWorkerIntegration = Sentry.webWorkerIntegration({ worker: [worker1, worker2] });\n * Sentry.addIntegration(webWorkerIntegration);\n * ```\n *\n * If you have any additional workers that you initialize at a later point,\n * you can add them to the integration as follows:\n *\n * ```ts filename={main.js}\n * const webWorkerIntegration = Sentry.webWorkerIntegration({ worker: worker1 });\n * Sentry.addIntegration(webWorkerIntegration);\n *\n * // sometime later:\n * webWorkerIntegration.addWorker(worker2);\n * ```\n *\n * Of course, you can also directly add the integration in Sentry.init:\n * ```ts filename={main.js}\n * import * as Sentry from '@sentry/<your-sdk>';\n *\n * // 1. Initialize the worker\n * const worker = new Worker(new URL('./worker.ts', import.meta.url));\n *\n * // 2. Initialize the SDK\n * Sentry.init({\n * integrations: [Sentry.webWorkerIntegration({ worker })]\n * });\n *\n * // 3. Register message listeners on the worker\n * worker.addEventListener('message', event => {\n * // ...\n * });\n * ```\n *\n * @param options {WebWorkerIntegrationOptions} Integration options:\n * - `worker`: The worker instance.\n */\nexport const webWorkerIntegration = defineIntegration(({ worker }: WebWorkerIntegrationOptions) => ({\n name: INTEGRATION_NAME,\n setupOnce: () => {\n (Array.isArray(worker) ? worker : [worker]).forEach(w => listenForSentryDebugIdMessages(w));\n },\n addWorker: (worker: Worker) => listenForSentryDebugIdMessages(worker),\n})) as IntegrationFn<WebWorkerIntegration>;\n\nfunction listenForSentryDebugIdMessages(worker: Worker): void {\n worker.addEventListener('message', event => {\n if (isSentryDebugIdMessage(event.data)) {\n event.stopImmediatePropagation(); // other listeners should not receive this message\n DEBUG_BUILD && debug.log('Sentry debugId web worker message received', event.data);\n WINDOW._sentryDebugIds = {\n ...event.data._sentryDebugIds,\n // debugIds of the main thread have precedence over the worker's in case of a collision.\n ...WINDOW._sentryDebugIds,\n };\n }\n });\n}\n\n/**\n * Minimal interface for DedicatedWorkerGlobalScope, only requiring the postMessage method.\n * (which is the only thing we need from the worker's global object)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope\n *\n * We can't use the actual type because it breaks everyone who doesn't have {\"lib\": [\"WebWorker\"]}\n * but uses {\"skipLibCheck\": true} in their tsconfig.json.\n */\ninterface MinimalDedicatedWorkerGlobalScope {\n postMessage: (message: unknown) => void;\n}\n\ninterface RegisterWebWorkerOptions {\n self: MinimalDedicatedWorkerGlobalScope & { _sentryDebugIds?: Record<string, string> };\n}\n\n/**\n * Use this function to register the worker with the Sentry SDK.\n *\n * @example\n * ```ts filename={worker.js}\n * import * as Sentry from '@sentry/<your-sdk>';\n *\n * // Do this as early as possible in your worker.\n * Sentry.registerWebWorker({ self });\n *\n * // continue setting up your worker\n * self.postMessage(...)\n * ```\n * @param options {RegisterWebWorkerOptions} Integration options:\n * - `self`: The worker instance you're calling this function from (self).\n */\nexport function registerWebWorker({ self }: RegisterWebWorkerOptions): void {\n self.postMessage({\n _sentryMessage: true,\n _sentryDebugIds: self._sentryDebugIds ?? undefined,\n });\n}\n\nfunction isSentryDebugIdMessage(eventData: unknown): eventData is WebWorkerMessage {\n return (\n isPlainObject(eventData) &&\n eventData._sentryMessage === true &&\n '_sentryDebugIds' in eventData &&\n (isPlainObject(eventData._sentryDebugIds) || eventData._sentryDebugIds === undefined)\n );\n}\n"],"names":["defineIntegration","DEBUG_BUILD","debug","WINDOW","isPlainObject"],"mappings":";;;;;;AAKO,MAAM,gBAAA,GAAmB;;AAehC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,oBAAA,GAAuBA,sBAAiB,CAAC,CAAC,EAAE,MAAA,EAAQ,MAAmC;AACpG,EAAE,IAAI,EAAE,gBAAgB;AACxB,EAAE,SAAS,EAAE,MAAM;AACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAA,GAAI,MAAA,GAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA,IAAK,8BAA8B,CAAC,CAAC,CAAC,CAAC;AAC/F,GAAG;AACH,EAAE,SAAS,EAAE,CAAC,MAAM,KAAa,8BAA8B,CAAC,MAAM,CAAC;AACvE,CAAC,CAAC,CAAA;;AAEF,SAAS,8BAA8B,CAAC,MAAM,EAAgB;AAC9D,EAAE,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS;AAC9C,IAAI,IAAI,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAC5C,MAAM,KAAK,CAAC,wBAAwB,EAAE,CAAA;AACtC,MAAMC,sBAAA,IAAeC,UAAK,CAAC,GAAG,CAAC,4CAA4C,EAAE,KAAK,CAAC,IAAI,CAAC;AACxF,MAAMC,cAAM,CAAC,eAAA,GAAkB;AAC/B,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe;AACrC;AACA,QAAQ,GAAGA,cAAM,CAAC,eAAe;AACjC,OAAO;AACP;AACA,GAAG,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,EAAE,IAAA,EAAM,EAAkC;AAC5E,EAAE,IAAI,CAAC,WAAW,CAAC;AACnB,IAAI,cAAc,EAAE,IAAI;AACxB,IAAI,eAAe,EAAE,IAAI,CAAC,eAAA,IAAmB,SAAS;AACtD,GAAG,CAAC;AACJ;;AAEA,SAAS,sBAAsB,CAAC,SAAS,EAA0C;AACnF,EAAE;AACF,IAAIC,kBAAa,CAAC,SAAS,CAAA;AAC3B,IAAI,SAAS,CAAC,cAAA,KAAmB,IAAA;AACjC,IAAI,iBAAA,IAAqB,SAAA;AACzB,KAAKA,kBAAa,CAAC,SAAS,CAAC,eAAe,CAAA,IAAK,SAAS,CAAC,eAAA,KAAoB,SAAS;AACxF;AACA;;;;;;"}
@@ -11,7 +11,7 @@ const INTEGRATION_NAME = 'WebWorker';
11
11
  * any messages from the worker. Otherwise, your message handlers will receive
12
12
  * messages from the Sentry SDK which you need to ignore.
13
13
  *
14
- * This integration only has an effect, if you call `Sentry.registerWorker(self)`
14
+ * This integration only has an effect, if you call `Sentry.registerWebWorker(self)`
15
15
  * from within the worker(s) you're adding to the integration.
16
16
  *
17
17
  * Given that you want to initialize the SDK as early as possible, you most likely
@@ -99,6 +99,16 @@ function listenForSentryDebugIdMessages(worker) {
99
99
  });
100
100
  }
101
101
 
102
+ /**
103
+ * Minimal interface for DedicatedWorkerGlobalScope, only requiring the postMessage method.
104
+ * (which is the only thing we need from the worker's global object)
105
+ *
106
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope
107
+ *
108
+ * We can't use the actual type because it breaks everyone who doesn't have {"lib": ["WebWorker"]}
109
+ * but uses {"skipLibCheck": true} in their tsconfig.json.
110
+ */
111
+
102
112
  /**
103
113
  * Use this function to register the worker with the Sentry SDK.
104
114
  *
@@ -107,7 +117,7 @@ function listenForSentryDebugIdMessages(worker) {
107
117
  * import * as Sentry from '@sentry/<your-sdk>';
108
118
  *
109
119
  * // Do this as early as possible in your worker.
110
- * Sentry.registerWorker({ self });
120
+ * Sentry.registerWebWorker({ self });
111
121
  *
112
122
  * // continue setting up your worker
113
123
  * self.postMessage(...)
@@ -1 +1 @@
1
- {"version":3,"file":"webWorker.js","sources":["../../../../src/integrations/webWorker.ts"],"sourcesContent":["import type { Integration, IntegrationFn } from '@sentry/core';\nimport { debug, defineIntegration, isPlainObject } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\nexport const INTEGRATION_NAME = 'WebWorker';\n\ninterface WebWorkerMessage {\n _sentryMessage: boolean;\n _sentryDebugIds?: Record<string, string>;\n}\n\ninterface WebWorkerIntegrationOptions {\n worker: Worker | Array<Worker>;\n}\n\ninterface WebWorkerIntegration extends Integration {\n addWorker: (worker: Worker) => void;\n}\n\n/**\n * Use this integration to set up Sentry with web workers.\n *\n * IMPORTANT: This integration must be added **before** you start listening to\n * any messages from the worker. Otherwise, your message handlers will receive\n * messages from the Sentry SDK which you need to ignore.\n *\n * This integration only has an effect, if you call `Sentry.registerWorker(self)`\n * from within the worker(s) you're adding to the integration.\n *\n * Given that you want to initialize the SDK as early as possible, you most likely\n * want to add this integration **after** initializing the SDK:\n *\n * @example:\n * ```ts filename={main.js}\n * import * as Sentry from '@sentry/<your-sdk>';\n *\n * // some time earlier:\n * Sentry.init(...)\n *\n * // 1. Initialize the worker\n * const worker = new Worker(new URL('./worker.ts', import.meta.url));\n *\n * // 2. Add the integration\n * const webWorkerIntegration = Sentry.webWorkerIntegration({ worker });\n * Sentry.addIntegration(webWorkerIntegration);\n *\n * // 3. Register message listeners on the worker\n * worker.addEventListener('message', event => {\n * // ...\n * });\n * ```\n *\n * If you initialize multiple workers at the same time, you can also pass an array of workers\n * to the integration:\n *\n * ```ts filename={main.js}\n * const webWorkerIntegration = Sentry.webWorkerIntegration({ worker: [worker1, worker2] });\n * Sentry.addIntegration(webWorkerIntegration);\n * ```\n *\n * If you have any additional workers that you initialize at a later point,\n * you can add them to the integration as follows:\n *\n * ```ts filename={main.js}\n * const webWorkerIntegration = Sentry.webWorkerIntegration({ worker: worker1 });\n * Sentry.addIntegration(webWorkerIntegration);\n *\n * // sometime later:\n * webWorkerIntegration.addWorker(worker2);\n * ```\n *\n * Of course, you can also directly add the integration in Sentry.init:\n * ```ts filename={main.js}\n * import * as Sentry from '@sentry/<your-sdk>';\n *\n * // 1. Initialize the worker\n * const worker = new Worker(new URL('./worker.ts', import.meta.url));\n *\n * // 2. Initialize the SDK\n * Sentry.init({\n * integrations: [Sentry.webWorkerIntegration({ worker })]\n * });\n *\n * // 3. Register message listeners on the worker\n * worker.addEventListener('message', event => {\n * // ...\n * });\n * ```\n *\n * @param options {WebWorkerIntegrationOptions} Integration options:\n * - `worker`: The worker instance.\n */\nexport const webWorkerIntegration = defineIntegration(({ worker }: WebWorkerIntegrationOptions) => ({\n name: INTEGRATION_NAME,\n setupOnce: () => {\n (Array.isArray(worker) ? worker : [worker]).forEach(w => listenForSentryDebugIdMessages(w));\n },\n addWorker: (worker: Worker) => listenForSentryDebugIdMessages(worker),\n})) as IntegrationFn<WebWorkerIntegration>;\n\nfunction listenForSentryDebugIdMessages(worker: Worker): void {\n worker.addEventListener('message', event => {\n if (isSentryDebugIdMessage(event.data)) {\n event.stopImmediatePropagation(); // other listeners should not receive this message\n DEBUG_BUILD && debug.log('Sentry debugId web worker message received', event.data);\n WINDOW._sentryDebugIds = {\n ...event.data._sentryDebugIds,\n // debugIds of the main thread have precedence over the worker's in case of a collision.\n ...WINDOW._sentryDebugIds,\n };\n }\n });\n}\n\ninterface RegisterWebWorkerOptions {\n self: Worker & { _sentryDebugIds?: Record<string, string> };\n}\n\n/**\n * Use this function to register the worker with the Sentry SDK.\n *\n * @example\n * ```ts filename={worker.js}\n * import * as Sentry from '@sentry/<your-sdk>';\n *\n * // Do this as early as possible in your worker.\n * Sentry.registerWorker({ self });\n *\n * // continue setting up your worker\n * self.postMessage(...)\n * ```\n * @param options {RegisterWebWorkerOptions} Integration options:\n * - `self`: The worker instance you're calling this function from (self).\n */\nexport function registerWebWorker({ self }: RegisterWebWorkerOptions): void {\n self.postMessage({\n _sentryMessage: true,\n _sentryDebugIds: self._sentryDebugIds ?? undefined,\n });\n}\n\nfunction isSentryDebugIdMessage(eventData: unknown): eventData is WebWorkerMessage {\n return (\n isPlainObject(eventData) &&\n eventData._sentryMessage === true &&\n '_sentryDebugIds' in eventData &&\n (isPlainObject(eventData._sentryDebugIds) || eventData._sentryDebugIds === undefined)\n );\n}\n"],"names":[],"mappings":";;;;AAKO,MAAM,gBAAA,GAAmB;;AAehC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,oBAAA,GAAuB,iBAAiB,CAAC,CAAC,EAAE,MAAA,EAAQ,MAAmC;AACpG,EAAE,IAAI,EAAE,gBAAgB;AACxB,EAAE,SAAS,EAAE,MAAM;AACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAA,GAAI,MAAA,GAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA,IAAK,8BAA8B,CAAC,CAAC,CAAC,CAAC;AAC/F,GAAG;AACH,EAAE,SAAS,EAAE,CAAC,MAAM,KAAa,8BAA8B,CAAC,MAAM,CAAC;AACvE,CAAC,CAAC,CAAA;;AAEF,SAAS,8BAA8B,CAAC,MAAM,EAAgB;AAC9D,EAAE,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS;AAC9C,IAAI,IAAI,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAC5C,MAAM,KAAK,CAAC,wBAAwB,EAAE,CAAA;AACtC,MAAM,WAAA,IAAe,KAAK,CAAC,GAAG,CAAC,4CAA4C,EAAE,KAAK,CAAC,IAAI,CAAC;AACxF,MAAM,MAAM,CAAC,eAAA,GAAkB;AAC/B,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe;AACrC;AACA,QAAQ,GAAG,MAAM,CAAC,eAAe;AACjC,OAAO;AACP;AACA,GAAG,CAAC;AACJ;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,EAAE,IAAA,EAAM,EAAkC;AAC5E,EAAE,IAAI,CAAC,WAAW,CAAC;AACnB,IAAI,cAAc,EAAE,IAAI;AACxB,IAAI,eAAe,EAAE,IAAI,CAAC,eAAA,IAAmB,SAAS;AACtD,GAAG,CAAC;AACJ;;AAEA,SAAS,sBAAsB,CAAC,SAAS,EAA0C;AACnF,EAAE;AACF,IAAI,aAAa,CAAC,SAAS,CAAA;AAC3B,IAAI,SAAS,CAAC,cAAA,KAAmB,IAAA;AACjC,IAAI,iBAAA,IAAqB,SAAA;AACzB,KAAK,aAAa,CAAC,SAAS,CAAC,eAAe,CAAA,IAAK,SAAS,CAAC,eAAA,KAAoB,SAAS;AACxF;AACA;;;;"}
1
+ {"version":3,"file":"webWorker.js","sources":["../../../../src/integrations/webWorker.ts"],"sourcesContent":["import type { Integration, IntegrationFn } from '@sentry/core';\nimport { debug, defineIntegration, isPlainObject } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\nexport const INTEGRATION_NAME = 'WebWorker';\n\ninterface WebWorkerMessage {\n _sentryMessage: boolean;\n _sentryDebugIds?: Record<string, string>;\n}\n\ninterface WebWorkerIntegrationOptions {\n worker: Worker | Array<Worker>;\n}\n\ninterface WebWorkerIntegration extends Integration {\n addWorker: (worker: Worker) => void;\n}\n\n/**\n * Use this integration to set up Sentry with web workers.\n *\n * IMPORTANT: This integration must be added **before** you start listening to\n * any messages from the worker. Otherwise, your message handlers will receive\n * messages from the Sentry SDK which you need to ignore.\n *\n * This integration only has an effect, if you call `Sentry.registerWebWorker(self)`\n * from within the worker(s) you're adding to the integration.\n *\n * Given that you want to initialize the SDK as early as possible, you most likely\n * want to add this integration **after** initializing the SDK:\n *\n * @example:\n * ```ts filename={main.js}\n * import * as Sentry from '@sentry/<your-sdk>';\n *\n * // some time earlier:\n * Sentry.init(...)\n *\n * // 1. Initialize the worker\n * const worker = new Worker(new URL('./worker.ts', import.meta.url));\n *\n * // 2. Add the integration\n * const webWorkerIntegration = Sentry.webWorkerIntegration({ worker });\n * Sentry.addIntegration(webWorkerIntegration);\n *\n * // 3. Register message listeners on the worker\n * worker.addEventListener('message', event => {\n * // ...\n * });\n * ```\n *\n * If you initialize multiple workers at the same time, you can also pass an array of workers\n * to the integration:\n *\n * ```ts filename={main.js}\n * const webWorkerIntegration = Sentry.webWorkerIntegration({ worker: [worker1, worker2] });\n * Sentry.addIntegration(webWorkerIntegration);\n * ```\n *\n * If you have any additional workers that you initialize at a later point,\n * you can add them to the integration as follows:\n *\n * ```ts filename={main.js}\n * const webWorkerIntegration = Sentry.webWorkerIntegration({ worker: worker1 });\n * Sentry.addIntegration(webWorkerIntegration);\n *\n * // sometime later:\n * webWorkerIntegration.addWorker(worker2);\n * ```\n *\n * Of course, you can also directly add the integration in Sentry.init:\n * ```ts filename={main.js}\n * import * as Sentry from '@sentry/<your-sdk>';\n *\n * // 1. Initialize the worker\n * const worker = new Worker(new URL('./worker.ts', import.meta.url));\n *\n * // 2. Initialize the SDK\n * Sentry.init({\n * integrations: [Sentry.webWorkerIntegration({ worker })]\n * });\n *\n * // 3. Register message listeners on the worker\n * worker.addEventListener('message', event => {\n * // ...\n * });\n * ```\n *\n * @param options {WebWorkerIntegrationOptions} Integration options:\n * - `worker`: The worker instance.\n */\nexport const webWorkerIntegration = defineIntegration(({ worker }: WebWorkerIntegrationOptions) => ({\n name: INTEGRATION_NAME,\n setupOnce: () => {\n (Array.isArray(worker) ? worker : [worker]).forEach(w => listenForSentryDebugIdMessages(w));\n },\n addWorker: (worker: Worker) => listenForSentryDebugIdMessages(worker),\n})) as IntegrationFn<WebWorkerIntegration>;\n\nfunction listenForSentryDebugIdMessages(worker: Worker): void {\n worker.addEventListener('message', event => {\n if (isSentryDebugIdMessage(event.data)) {\n event.stopImmediatePropagation(); // other listeners should not receive this message\n DEBUG_BUILD && debug.log('Sentry debugId web worker message received', event.data);\n WINDOW._sentryDebugIds = {\n ...event.data._sentryDebugIds,\n // debugIds of the main thread have precedence over the worker's in case of a collision.\n ...WINDOW._sentryDebugIds,\n };\n }\n });\n}\n\n/**\n * Minimal interface for DedicatedWorkerGlobalScope, only requiring the postMessage method.\n * (which is the only thing we need from the worker's global object)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope\n *\n * We can't use the actual type because it breaks everyone who doesn't have {\"lib\": [\"WebWorker\"]}\n * but uses {\"skipLibCheck\": true} in their tsconfig.json.\n */\ninterface MinimalDedicatedWorkerGlobalScope {\n postMessage: (message: unknown) => void;\n}\n\ninterface RegisterWebWorkerOptions {\n self: MinimalDedicatedWorkerGlobalScope & { _sentryDebugIds?: Record<string, string> };\n}\n\n/**\n * Use this function to register the worker with the Sentry SDK.\n *\n * @example\n * ```ts filename={worker.js}\n * import * as Sentry from '@sentry/<your-sdk>';\n *\n * // Do this as early as possible in your worker.\n * Sentry.registerWebWorker({ self });\n *\n * // continue setting up your worker\n * self.postMessage(...)\n * ```\n * @param options {RegisterWebWorkerOptions} Integration options:\n * - `self`: The worker instance you're calling this function from (self).\n */\nexport function registerWebWorker({ self }: RegisterWebWorkerOptions): void {\n self.postMessage({\n _sentryMessage: true,\n _sentryDebugIds: self._sentryDebugIds ?? undefined,\n });\n}\n\nfunction isSentryDebugIdMessage(eventData: unknown): eventData is WebWorkerMessage {\n return (\n isPlainObject(eventData) &&\n eventData._sentryMessage === true &&\n '_sentryDebugIds' in eventData &&\n (isPlainObject(eventData._sentryDebugIds) || eventData._sentryDebugIds === undefined)\n );\n}\n"],"names":[],"mappings":";;;;AAKO,MAAM,gBAAA,GAAmB;;AAehC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,oBAAA,GAAuB,iBAAiB,CAAC,CAAC,EAAE,MAAA,EAAQ,MAAmC;AACpG,EAAE,IAAI,EAAE,gBAAgB;AACxB,EAAE,SAAS,EAAE,MAAM;AACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAA,GAAI,MAAA,GAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA,IAAK,8BAA8B,CAAC,CAAC,CAAC,CAAC;AAC/F,GAAG;AACH,EAAE,SAAS,EAAE,CAAC,MAAM,KAAa,8BAA8B,CAAC,MAAM,CAAC;AACvE,CAAC,CAAC,CAAA;;AAEF,SAAS,8BAA8B,CAAC,MAAM,EAAgB;AAC9D,EAAE,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS;AAC9C,IAAI,IAAI,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAC5C,MAAM,KAAK,CAAC,wBAAwB,EAAE,CAAA;AACtC,MAAM,WAAA,IAAe,KAAK,CAAC,GAAG,CAAC,4CAA4C,EAAE,KAAK,CAAC,IAAI,CAAC;AACxF,MAAM,MAAM,CAAC,eAAA,GAAkB;AAC/B,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe;AACrC;AACA,QAAQ,GAAG,MAAM,CAAC,eAAe;AACjC,OAAO;AACP;AACA,GAAG,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,EAAE,IAAA,EAAM,EAAkC;AAC5E,EAAE,IAAI,CAAC,WAAW,CAAC;AACnB,IAAI,cAAc,EAAE,IAAI;AACxB,IAAI,eAAe,EAAE,IAAI,CAAC,eAAA,IAAmB,SAAS;AACtD,GAAG,CAAC;AACJ;;AAEA,SAAS,sBAAsB,CAAC,SAAS,EAA0C;AACnF,EAAE;AACF,IAAI,aAAa,CAAC,SAAS,CAAA;AAC3B,IAAI,SAAS,CAAC,cAAA,KAAmB,IAAA;AACjC,IAAI,iBAAA,IAAqB,SAAA;AACzB,KAAK,aAAa,CAAC,SAAS,CAAC,eAAe,CAAA,IAAK,SAAS,CAAC,eAAA,KAAoB,SAAS;AACxF;AACA;;;;"}
@@ -1 +1 @@
1
- {"type":"module","version":"10.5.0","sideEffects":false}
1
+ {"type":"module","version":"10.7.0","sideEffects":false}
@@ -10,7 +10,7 @@ interface WebWorkerIntegration extends Integration {
10
10
  * any messages from the worker. Otherwise, your message handlers will receive
11
11
  * messages from the Sentry SDK which you need to ignore.
12
12
  *
13
- * This integration only has an effect, if you call `Sentry.registerWorker(self)`
13
+ * This integration only has an effect, if you call `Sentry.registerWebWorker(self)`
14
14
  * from within the worker(s) you're adding to the integration.
15
15
  *
16
16
  * Given that you want to initialize the SDK as early as possible, you most likely
@@ -77,8 +77,20 @@ interface WebWorkerIntegration extends Integration {
77
77
  * - `worker`: The worker instance.
78
78
  */
79
79
  export declare const webWorkerIntegration: IntegrationFn<WebWorkerIntegration>;
80
+ /**
81
+ * Minimal interface for DedicatedWorkerGlobalScope, only requiring the postMessage method.
82
+ * (which is the only thing we need from the worker's global object)
83
+ *
84
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope
85
+ *
86
+ * We can't use the actual type because it breaks everyone who doesn't have {"lib": ["WebWorker"]}
87
+ * but uses {"skipLibCheck": true} in their tsconfig.json.
88
+ */
89
+ interface MinimalDedicatedWorkerGlobalScope {
90
+ postMessage: (message: unknown) => void;
91
+ }
80
92
  interface RegisterWebWorkerOptions {
81
- self: Worker & {
93
+ self: MinimalDedicatedWorkerGlobalScope & {
82
94
  _sentryDebugIds?: Record<string, string>;
83
95
  };
84
96
  }
@@ -90,7 +102,7 @@ interface RegisterWebWorkerOptions {
90
102
  * import * as Sentry from '@sentry/<your-sdk>';
91
103
  *
92
104
  * // Do this as early as possible in your worker.
93
- * Sentry.registerWorker({ self });
105
+ * Sentry.registerWebWorker({ self });
94
106
  *
95
107
  * // continue setting up your worker
96
108
  * self.postMessage(...)
@@ -1 +1 @@
1
- {"version":3,"file":"webWorker.d.ts","sourceRoot":"","sources":["../../../../src/integrations/webWorker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAK/D,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAW5C,UAAU,oBAAqB,SAAQ,WAAW;IAChD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEG;AACH,eAAO,MAAM,oBAAoB,qCAMS,CAAC;AAgB3C,UAAU,wBAAwB;IAChC,IAAI,EAAE,MAAM,GAAG;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CAC7D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,wBAAwB,GAAG,IAAI,CAK1E"}
1
+ {"version":3,"file":"webWorker.d.ts","sourceRoot":"","sources":["../../../../src/integrations/webWorker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAK/D,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAW5C,UAAU,oBAAqB,SAAQ,WAAW;IAChD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEG;AACH,eAAO,MAAM,oBAAoB,qCAMS,CAAC;AAgB3C;;;;;;;;GAQG;AACH,UAAU,iCAAiC;IACzC,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC;AAED,UAAU,wBAAwB;IAChC,IAAI,EAAE,iCAAiC,GAAG;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CACxF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,wBAAwB,GAAG,IAAI,CAK1E"}
@@ -10,7 +10,7 @@ interface WebWorkerIntegration extends Integration {
10
10
  * any messages from the worker. Otherwise, your message handlers will receive
11
11
  * messages from the Sentry SDK which you need to ignore.
12
12
  *
13
- * This integration only has an effect, if you call `Sentry.registerWorker(self)`
13
+ * This integration only has an effect, if you call `Sentry.registerWebWorker(self)`
14
14
  * from within the worker(s) you're adding to the integration.
15
15
  *
16
16
  * Given that you want to initialize the SDK as early as possible, you most likely
@@ -77,8 +77,20 @@ interface WebWorkerIntegration extends Integration {
77
77
  * - `worker`: The worker instance.
78
78
  */
79
79
  export declare const webWorkerIntegration: IntegrationFn<WebWorkerIntegration>;
80
+ /**
81
+ * Minimal interface for DedicatedWorkerGlobalScope, only requiring the postMessage method.
82
+ * (which is the only thing we need from the worker's global object)
83
+ *
84
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope
85
+ *
86
+ * We can't use the actual type because it breaks everyone who doesn't have {"lib": ["WebWorker"]}
87
+ * but uses {"skipLibCheck": true} in their tsconfig.json.
88
+ */
89
+ interface MinimalDedicatedWorkerGlobalScope {
90
+ postMessage: (message: unknown) => void;
91
+ }
80
92
  interface RegisterWebWorkerOptions {
81
- self: Worker & {
93
+ self: MinimalDedicatedWorkerGlobalScope & {
82
94
  _sentryDebugIds?: Record<string, string>;
83
95
  };
84
96
  }
@@ -90,7 +102,7 @@ interface RegisterWebWorkerOptions {
90
102
  * import * as Sentry from '@sentry/<your-sdk>';
91
103
  *
92
104
  * // Do this as early as possible in your worker.
93
- * Sentry.registerWorker({ self });
105
+ * Sentry.registerWebWorker({ self });
94
106
  *
95
107
  * // continue setting up your worker
96
108
  * self.postMessage(...)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentry/browser",
3
- "version": "10.5.0",
3
+ "version": "10.7.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",
@@ -39,14 +39,14 @@
39
39
  "access": "public"
40
40
  },
41
41
  "dependencies": {
42
- "@sentry-internal/browser-utils": "10.5.0",
43
- "@sentry-internal/feedback": "10.5.0",
44
- "@sentry-internal/replay": "10.5.0",
45
- "@sentry-internal/replay-canvas": "10.5.0",
46
- "@sentry/core": "10.5.0"
42
+ "@sentry-internal/browser-utils": "10.7.0",
43
+ "@sentry-internal/feedback": "10.7.0",
44
+ "@sentry-internal/replay": "10.7.0",
45
+ "@sentry-internal/replay-canvas": "10.7.0",
46
+ "@sentry/core": "10.7.0"
47
47
  },
48
48
  "devDependencies": {
49
- "@sentry-internal/integration-shims": "10.5.0",
49
+ "@sentry-internal/integration-shims": "10.7.0",
50
50
  "fake-indexeddb": "^4.0.1"
51
51
  },
52
52
  "scripts": {