@sentry/wasm 6.19.6 → 7.0.0-alpha.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.
File without changes
File without changes
@@ -45,8 +45,8 @@ var Wasm = /** @class */ (function () {
45
45
  var haveWasm = false;
46
46
  if (event.exception && event.exception.values) {
47
47
  event.exception.values.forEach(function (exception) {
48
- var _a, _b;
49
- if ((_b = (_a = exception) === null || _a === void 0 ? void 0 : _a.stacktrace) === null || _b === void 0 ? void 0 : _b.frames) {
48
+ var _a;
49
+ if ((_a = exception === null || exception === void 0 ? void 0 : exception.stacktrace) === null || _a === void 0 ? void 0 : _a.frames) {
50
50
  haveWasm = haveWasm || patchFrames(exception.stacktrace.frames);
51
51
  }
52
52
  });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";AAEA,uDAAsD;AACtD,uCAAiD;AAEjD,gBAAgB;AAChB,SAAS,WAAW,CAAC,MAAyB;IAC5C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,CAAC,OAAO,CAAC,UAAA,KAAK;QAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnB,OAAO;SACR;QACD,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACpF,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,IAAM,KAAK,GAAG,mBAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,KAAK,IAAI,CAAC,EAAE;gBACd,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClC,KAAK,CAAC,SAAS,GAAG,SAAO,KAAO,CAAC;gBACjC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC1B,QAAQ,GAAG,IAAI,CAAC;aACjB;SACF;IACH,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH;IAAA;QAME;;WAEG;QACI,SAAI,GAAW,IAAI,CAAC,EAAE,CAAC;IA8BhC,CAAC;IA5BC;;OAEG;IACI,wBAAS,GAAhB,UAAiB,uBAA2D,EAAE,cAAyB;QACrG,mCAAgB,EAAE,CAAC;QAEnB,uBAAuB,CAAC,UAAC,KAAY;;YACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;YAErB,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;gBAC7C,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,UAAA,SAAS;;oBACtC,UAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,0CAAE,MAAM,EAAE;wBACjC,QAAQ,GAAG,QAAQ,IAAI,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;qBACjE;gBACH,CAAC,CAAC,CAAC;aACJ;YACD,UAAI,KAAK,CAAC,UAAU,0CAAE,MAAM,EAAE;gBAC5B,QAAQ,GAAG,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAC7D;YAED,IAAI,QAAQ,EAAE;gBACZ,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;gBAC1C,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,oBAAS,EAAE,CAAC;aACvC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IArCD;;OAEG;IACW,OAAE,GAAW,MAAM,CAAC;IAmCpC,WAAC;CAAA,AAvCD,IAuCC;AAvCY,oBAAI","sourcesContent":["import { Event, EventProcessor, Hub, Integration, StackFrame } from '@sentry/types';\n\nimport { patchWebAssembly } from './patchWebAssembly';\nimport { getImage, getImages } from './registry';\n\n/** plz don't */\nfunction patchFrames(frames: Array<StackFrame>): boolean {\n let haveWasm = false;\n frames.forEach(frame => {\n if (!frame.filename) {\n return;\n }\n const match = frame.filename.match(/^(.*?):wasm-function\\[\\d+\\]:(0x[a-fA-F0-9]+)$/);\n if (match !== null) {\n const index = getImage(match[1]);\n if (index >= 0) {\n frame.instruction_addr = match[2];\n frame.addr_mode = `rel:${index}`;\n frame.filename = match[1];\n frame.platform = 'native';\n haveWasm = true;\n }\n }\n });\n return haveWasm;\n}\n\n/**\n * Process WASM stack traces to support server-side symbolication.\n *\n * This also hooks the WebAssembly loading browser API so that module\n * registraitons are intercepted.\n */\nexport class Wasm implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Wasm';\n\n /**\n * @inheritDoc\n */\n public name: string = Wasm.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, _getCurrentHub: () => Hub): void {\n patchWebAssembly();\n\n addGlobalEventProcessor((event: Event) => {\n let haveWasm = false;\n\n if (event.exception && event.exception.values) {\n event.exception.values.forEach(exception => {\n if (exception?.stacktrace?.frames) {\n haveWasm = haveWasm || patchFrames(exception.stacktrace.frames);\n }\n });\n }\n if (event.stacktrace?.frames) {\n haveWasm = haveWasm || patchFrames(event.stacktrace.frames);\n }\n\n if (haveWasm) {\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = getImages();\n }\n\n return event;\n });\n }\n}\n"]}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/esm/index.js CHANGED
@@ -44,8 +44,8 @@ var Wasm = /** @class */ (function () {
44
44
  var haveWasm = false;
45
45
  if (event.exception && event.exception.values) {
46
46
  event.exception.values.forEach(function (exception) {
47
- var _a, _b;
48
- if ((_b = (_a = exception) === null || _a === void 0 ? void 0 : _a.stacktrace) === null || _b === void 0 ? void 0 : _b.frames) {
47
+ var _a;
48
+ if ((_a = exception === null || exception === void 0 ? void 0 : exception.stacktrace) === null || _a === void 0 ? void 0 : _a.frames) {
49
49
  haveWasm = haveWasm || patchFrames(exception.stacktrace.frames);
50
50
  }
51
51
  });
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEjD,gBAAgB;AAChB,SAAS,WAAW,CAAC,MAAyB;IAC5C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,CAAC,OAAO,CAAC,UAAA,KAAK;QAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnB,OAAO;SACR;QACD,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACpF,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,KAAK,IAAI,CAAC,EAAE;gBACd,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClC,KAAK,CAAC,SAAS,GAAG,SAAO,KAAO,CAAC;gBACjC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC1B,QAAQ,GAAG,IAAI,CAAC;aACjB;SACF;IACH,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH;IAAA;QAME;;WAEG;QACI,SAAI,GAAW,IAAI,CAAC,EAAE,CAAC;IA8BhC,CAAC;IA5BC;;OAEG;IACI,wBAAS,GAAhB,UAAiB,uBAA2D,EAAE,cAAyB;QACrG,gBAAgB,EAAE,CAAC;QAEnB,uBAAuB,CAAC,UAAC,KAAY;;YACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;YAErB,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;gBAC7C,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,UAAA,SAAS;;oBACtC,gBAAI,SAAS,0CAAE,UAAU,0CAAE,MAAM,EAAE;wBACjC,QAAQ,GAAG,QAAQ,IAAI,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;qBACjE;gBACH,CAAC,CAAC,CAAC;aACJ;YACD,UAAI,KAAK,CAAC,UAAU,0CAAE,MAAM,EAAE;gBAC5B,QAAQ,GAAG,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAC7D;YAED,IAAI,QAAQ,EAAE;gBACZ,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;gBAC1C,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;aACvC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IArCD;;OAEG;IACW,OAAE,GAAW,MAAM,CAAC;IAmCpC,WAAC;CAAA,AAvCD,IAuCC;SAvCY,IAAI","sourcesContent":["import { Event, EventProcessor, Hub, Integration, StackFrame } from '@sentry/types';\n\nimport { patchWebAssembly } from './patchWebAssembly';\nimport { getImage, getImages } from './registry';\n\n/** plz don't */\nfunction patchFrames(frames: Array<StackFrame>): boolean {\n let haveWasm = false;\n frames.forEach(frame => {\n if (!frame.filename) {\n return;\n }\n const match = frame.filename.match(/^(.*?):wasm-function\\[\\d+\\]:(0x[a-fA-F0-9]+)$/);\n if (match !== null) {\n const index = getImage(match[1]);\n if (index >= 0) {\n frame.instruction_addr = match[2];\n frame.addr_mode = `rel:${index}`;\n frame.filename = match[1];\n frame.platform = 'native';\n haveWasm = true;\n }\n }\n });\n return haveWasm;\n}\n\n/**\n * Process WASM stack traces to support server-side symbolication.\n *\n * This also hooks the WebAssembly loading browser API so that module\n * registraitons are intercepted.\n */\nexport class Wasm implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Wasm';\n\n /**\n * @inheritDoc\n */\n public name: string = Wasm.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, _getCurrentHub: () => Hub): void {\n patchWebAssembly();\n\n addGlobalEventProcessor((event: Event) => {\n let haveWasm = false;\n\n if (event.exception && event.exception.values) {\n event.exception.values.forEach(exception => {\n if (exception?.stacktrace?.frames) {\n haveWasm = haveWasm || patchFrames(exception.stacktrace.frames);\n }\n });\n }\n if (event.stacktrace?.frames) {\n haveWasm = haveWasm || patchFrames(event.stacktrace.frames);\n }\n\n if (haveWasm) {\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = getImages();\n }\n\n return event;\n });\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEjD,gBAAgB;AAChB,SAAS,WAAW,CAAC,MAAyB;IAC5C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,CAAC,OAAO,CAAC,UAAA,KAAK;QAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnB,OAAO;SACR;QACD,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACpF,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,KAAK,IAAI,CAAC,EAAE;gBACd,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClC,KAAK,CAAC,SAAS,GAAG,SAAO,KAAO,CAAC;gBACjC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC1B,QAAQ,GAAG,IAAI,CAAC;aACjB;SACF;IACH,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH;IAAA;QAME;;WAEG;QACI,SAAI,GAAW,IAAI,CAAC,EAAE,CAAC;IA8BhC,CAAC;IA5BC;;OAEG;IACI,wBAAS,GAAhB,UAAiB,uBAA2D,EAAE,cAAyB;QACrG,gBAAgB,EAAE,CAAC;QAEnB,uBAAuB,CAAC,UAAC,KAAY;;YACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;YAErB,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;gBAC7C,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,UAAA,SAAS;;oBACtC,UAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,0CAAE,MAAM,EAAE;wBACjC,QAAQ,GAAG,QAAQ,IAAI,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;qBACjE;gBACH,CAAC,CAAC,CAAC;aACJ;YACD,UAAI,KAAK,CAAC,UAAU,0CAAE,MAAM,EAAE;gBAC5B,QAAQ,GAAG,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAC7D;YAED,IAAI,QAAQ,EAAE;gBACZ,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;gBAC1C,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;aACvC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IArCD;;OAEG;IACW,OAAE,GAAW,MAAM,CAAC;IAmCpC,WAAC;CAAA,AAvCD,IAuCC;SAvCY,IAAI","sourcesContent":["import { Event, EventProcessor, Hub, Integration, StackFrame } from '@sentry/types';\n\nimport { patchWebAssembly } from './patchWebAssembly';\nimport { getImage, getImages } from './registry';\n\n/** plz don't */\nfunction patchFrames(frames: Array<StackFrame>): boolean {\n let haveWasm = false;\n frames.forEach(frame => {\n if (!frame.filename) {\n return;\n }\n const match = frame.filename.match(/^(.*?):wasm-function\\[\\d+\\]:(0x[a-fA-F0-9]+)$/);\n if (match !== null) {\n const index = getImage(match[1]);\n if (index >= 0) {\n frame.instruction_addr = match[2];\n frame.addr_mode = `rel:${index}`;\n frame.filename = match[1];\n frame.platform = 'native';\n haveWasm = true;\n }\n }\n });\n return haveWasm;\n}\n\n/**\n * Process WASM stack traces to support server-side symbolication.\n *\n * This also hooks the WebAssembly loading browser API so that module\n * registraitons are intercepted.\n */\nexport class Wasm implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Wasm';\n\n /**\n * @inheritDoc\n */\n public name: string = Wasm.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, _getCurrentHub: () => Hub): void {\n patchWebAssembly();\n\n addGlobalEventProcessor((event: Event) => {\n let haveWasm = false;\n\n if (event.exception && event.exception.values) {\n event.exception.values.forEach(exception => {\n if (exception?.stacktrace?.frames) {\n haveWasm = haveWasm || patchFrames(exception.stacktrace.frames);\n }\n });\n }\n if (event.stacktrace?.frames) {\n haveWasm = haveWasm || patchFrames(event.stacktrace.frames);\n }\n\n if (haveWasm) {\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = getImages();\n }\n\n return event;\n });\n }\n}\n"]}
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@sentry/wasm",
3
- "version": "6.19.6",
3
+ "version": "7.0.0-alpha.0",
4
4
  "description": "Support for WASM.",
5
5
  "repository": "git://github.com/getsentry/sentry-javascript.git",
6
6
  "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/wasm",
7
7
  "author": "Sentry",
8
8
  "license": "MIT",
9
9
  "engines": {
10
- "node": ">=6"
10
+ "node": ">=8"
11
11
  },
12
- "main": "dist/index.js",
12
+ "main": "cjs/index.js",
13
13
  "module": "esm/index.js",
14
14
  "types": "types/index.d.ts",
15
15
  "publishConfig": {
16
16
  "access": "public"
17
17
  },
18
18
  "dependencies": {
19
- "@sentry/browser": "6.19.6",
20
- "@sentry/types": "6.19.6",
19
+ "@sentry/browser": "7.0.0-alpha.0",
20
+ "@sentry/types": "7.0.0-alpha.0",
21
21
  "tslib": "^1.9.3"
22
22
  },
23
23
  "devDependencies": {
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";AAEA,uDAAsD;AACtD,uCAAiD;AAEjD,gBAAgB;AAChB,SAAS,WAAW,CAAC,MAAyB;IAC5C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,CAAC,OAAO,CAAC,UAAA,KAAK;QAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnB,OAAO;SACR;QACD,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACpF,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,IAAM,KAAK,GAAG,mBAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,KAAK,IAAI,CAAC,EAAE;gBACd,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClC,KAAK,CAAC,SAAS,GAAG,SAAO,KAAO,CAAC;gBACjC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC1B,QAAQ,GAAG,IAAI,CAAC;aACjB;SACF;IACH,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH;IAAA;QAME;;WAEG;QACI,SAAI,GAAW,IAAI,CAAC,EAAE,CAAC;IA8BhC,CAAC;IA5BC;;OAEG;IACI,wBAAS,GAAhB,UAAiB,uBAA2D,EAAE,cAAyB;QACrG,mCAAgB,EAAE,CAAC;QAEnB,uBAAuB,CAAC,UAAC,KAAY;;YACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;YAErB,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;gBAC7C,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,UAAA,SAAS;;oBACtC,gBAAI,SAAS,0CAAE,UAAU,0CAAE,MAAM,EAAE;wBACjC,QAAQ,GAAG,QAAQ,IAAI,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;qBACjE;gBACH,CAAC,CAAC,CAAC;aACJ;YACD,UAAI,KAAK,CAAC,UAAU,0CAAE,MAAM,EAAE;gBAC5B,QAAQ,GAAG,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAC7D;YAED,IAAI,QAAQ,EAAE;gBACZ,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;gBAC1C,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,oBAAS,EAAE,CAAC;aACvC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IArCD;;OAEG;IACW,OAAE,GAAW,MAAM,CAAC;IAmCpC,WAAC;CAAA,AAvCD,IAuCC;AAvCY,oBAAI","sourcesContent":["import { Event, EventProcessor, Hub, Integration, StackFrame } from '@sentry/types';\n\nimport { patchWebAssembly } from './patchWebAssembly';\nimport { getImage, getImages } from './registry';\n\n/** plz don't */\nfunction patchFrames(frames: Array<StackFrame>): boolean {\n let haveWasm = false;\n frames.forEach(frame => {\n if (!frame.filename) {\n return;\n }\n const match = frame.filename.match(/^(.*?):wasm-function\\[\\d+\\]:(0x[a-fA-F0-9]+)$/);\n if (match !== null) {\n const index = getImage(match[1]);\n if (index >= 0) {\n frame.instruction_addr = match[2];\n frame.addr_mode = `rel:${index}`;\n frame.filename = match[1];\n frame.platform = 'native';\n haveWasm = true;\n }\n }\n });\n return haveWasm;\n}\n\n/**\n * Process WASM stack traces to support server-side symbolication.\n *\n * This also hooks the WebAssembly loading browser API so that module\n * registraitons are intercepted.\n */\nexport class Wasm implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Wasm';\n\n /**\n * @inheritDoc\n */\n public name: string = Wasm.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, _getCurrentHub: () => Hub): void {\n patchWebAssembly();\n\n addGlobalEventProcessor((event: Event) => {\n let haveWasm = false;\n\n if (event.exception && event.exception.values) {\n event.exception.values.forEach(exception => {\n if (exception?.stacktrace?.frames) {\n haveWasm = haveWasm || patchFrames(exception.stacktrace.frames);\n }\n });\n }\n if (event.stacktrace?.frames) {\n haveWasm = haveWasm || patchFrames(event.stacktrace.frames);\n }\n\n if (haveWasm) {\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = getImages();\n }\n\n return event;\n });\n }\n}\n"]}