@posthog/core 1.5.1 → 1.5.3

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.
Files changed (60) hide show
  1. package/dist/error-tracking/error-properties-builder.d.ts +3 -3
  2. package/dist/error-tracking/error-properties-builder.d.ts.map +1 -1
  3. package/dist/error-tracking/error-properties-builder.js +2 -3
  4. package/dist/error-tracking/error-properties-builder.mjs +2 -3
  5. package/dist/error-tracking/parsers/base.d.ts +1 -1
  6. package/dist/error-tracking/parsers/base.d.ts.map +1 -1
  7. package/dist/error-tracking/parsers/base.js +2 -2
  8. package/dist/error-tracking/parsers/base.mjs +2 -2
  9. package/dist/error-tracking/parsers/chrome.js +3 -3
  10. package/dist/error-tracking/parsers/chrome.mjs +3 -3
  11. package/dist/error-tracking/parsers/gecko.d.ts.map +1 -1
  12. package/dist/error-tracking/parsers/gecko.js +2 -2
  13. package/dist/error-tracking/parsers/gecko.mjs +2 -2
  14. package/dist/error-tracking/parsers/index.d.ts +2 -2
  15. package/dist/error-tracking/parsers/index.d.ts.map +1 -1
  16. package/dist/error-tracking/parsers/index.js +2 -2
  17. package/dist/error-tracking/parsers/index.mjs +2 -2
  18. package/dist/error-tracking/parsers/node.d.ts.map +1 -1
  19. package/dist/error-tracking/parsers/node.js +3 -3
  20. package/dist/error-tracking/parsers/node.mjs +3 -3
  21. package/dist/error-tracking/parsers/opera.d.ts.map +1 -1
  22. package/dist/error-tracking/parsers/opera.js +4 -4
  23. package/dist/error-tracking/parsers/opera.mjs +4 -4
  24. package/dist/error-tracking/parsers/winjs.js +2 -2
  25. package/dist/error-tracking/parsers/winjs.mjs +2 -2
  26. package/dist/error-tracking/types.d.ts +3 -2
  27. package/dist/error-tracking/types.d.ts.map +1 -1
  28. package/dist/featureFlagUtils.d.ts +1 -1
  29. package/dist/process/index.d.ts +1 -0
  30. package/dist/process/index.d.ts.map +1 -1
  31. package/dist/process/index.js +15 -2
  32. package/dist/process/index.mjs +2 -0
  33. package/dist/process/spawn-local.d.ts +1 -3
  34. package/dist/process/spawn-local.d.ts.map +1 -1
  35. package/dist/process/spawn-local.js +3 -12
  36. package/dist/process/spawn-local.mjs +3 -12
  37. package/dist/process/utils.d.ts +4 -1
  38. package/dist/process/utils.d.ts.map +1 -1
  39. package/dist/process/utils.js +3 -3
  40. package/dist/process/utils.mjs +3 -3
  41. package/package.json +2 -1
  42. package/src/error-tracking/error-properties-builder.parse.spec.ts +7 -2
  43. package/src/error-tracking/error-properties-builder.ts +3 -7
  44. package/src/error-tracking/parsers/base.ts +8 -2
  45. package/src/error-tracking/parsers/chrome.ts +3 -3
  46. package/src/error-tracking/parsers/gecko.ts +3 -3
  47. package/src/error-tracking/parsers/index.ts +3 -5
  48. package/src/error-tracking/parsers/node.ts +4 -4
  49. package/src/error-tracking/parsers/opera.ts +6 -4
  50. package/src/error-tracking/parsers/winjs.ts +2 -2
  51. package/src/error-tracking/types.ts +4 -2
  52. package/src/featureFlagUtils.ts +1 -1
  53. package/src/process/index.ts +1 -0
  54. package/src/process/spawn-local.ts +3 -18
  55. package/src/process/utils.ts +10 -3
  56. package/dist/error-tracking/parsers/react-native.d.ts +0 -1
  57. package/dist/error-tracking/parsers/react-native.d.ts.map +0 -1
  58. package/dist/error-tracking/parsers/react-native.js +0 -5
  59. package/dist/error-tracking/parsers/react-native.mjs +0 -0
  60. package/src/error-tracking/parsers/react-native.ts +0 -0
@@ -1,9 +1,9 @@
1
- import { ErrorProperties, StackFrameModifierFn, StackParser, ErrorTrackingCoercer, EventHint, StackLineParser } from './types';
1
+ import { ErrorProperties, StackFrameModifierFn, StackParser, ErrorTrackingCoercer, EventHint } from './types';
2
2
  export declare class ErrorPropertiesBuilder {
3
3
  private coercers;
4
+ private stackParser;
4
5
  private modifiers;
5
- stackParser: StackParser;
6
- constructor(coercers?: ErrorTrackingCoercer<any>[], parsers?: StackLineParser[], modifiers?: StackFrameModifierFn[]);
6
+ constructor(coercers: ErrorTrackingCoercer<any>[], stackParser: StackParser, modifiers?: StackFrameModifierFn[]);
7
7
  buildFromUnknown(input: unknown, hint?: EventHint): ErrorProperties;
8
8
  modifyFrames(exceptionList: ErrorProperties['$exception_list']): Promise<ErrorProperties['$exception_list']>;
9
9
  private coerceFallback;
@@ -1 +1 @@
1
- {"version":3,"file":"error-properties-builder.d.ts","sourceRoot":"","sources":["../../src/error-tracking/error-properties-builder.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EAKf,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,eAAe,EAMhB,MAAM,SAAS,CAAA;AAIhB,qBAAa,sBAAsB;IAI/B,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,SAAS;IALnB,WAAW,EAAE,WAAW,CAAA;gBAGd,QAAQ,GAAE,oBAAoB,CAAC,GAAG,CAAC,EAAO,EAClD,OAAO,GAAE,eAAe,EAAO,EACvB,SAAS,GAAE,oBAAoB,EAAO;IAKhD,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,GAAE,SAAc,GAAG,eAAe;IAiBjE,YAAY,CAAC,aAAa,EAAE,eAAe,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;IASlH,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,aAAa;YASP,cAAc;IAQ5B,OAAO,CAAC,sBAAsB;IA6B9B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,oBAAoB;CAuB7B"}
1
+ {"version":3,"file":"error-properties-builder.d.ts","sourceRoot":"","sources":["../../src/error-tracking/error-properties-builder.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EAKf,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,SAAS,EAOV,MAAM,SAAS,CAAA;AAIhB,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,SAAS;gBAFT,QAAQ,EAAE,oBAAoB,CAAC,GAAG,CAAC,EAAE,EACrC,WAAW,EAAE,WAAW,EACxB,SAAS,GAAE,oBAAoB,EAAO;IAGhD,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,GAAE,SAAc,GAAG,eAAe;IAiBjE,YAAY,CAAC,aAAa,EAAE,eAAe,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;IASlH,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,aAAa;YASP,cAAc;IAQ5B,OAAO,CAAC,sBAAsB;IA6B9B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,oBAAoB;CAuB7B"}
@@ -28,13 +28,12 @@ __webpack_require__.d(__webpack_exports__, {
28
28
  });
29
29
  const index_js_namespaceObject = require("../utils/index.js");
30
30
  const external_chunk_ids_js_namespaceObject = require("./chunk-ids.js");
31
- const external_parsers_index_js_namespaceObject = require("./parsers/index.js");
32
31
  const MAX_CAUSE_RECURSION = 4;
33
32
  class ErrorPropertiesBuilder {
34
- constructor(coercers = [], parsers = [], modifiers = []){
33
+ constructor(coercers, stackParser, modifiers = []){
35
34
  this.coercers = coercers;
35
+ this.stackParser = stackParser;
36
36
  this.modifiers = modifiers;
37
- this.stackParser = (0, external_parsers_index_js_namespaceObject.createStackParser)(...parsers);
38
37
  }
39
38
  buildFromUnknown(input, hint = {}) {
40
39
  const providedMechanism = hint && hint.mechanism;
@@ -1,12 +1,11 @@
1
1
  import { isArray } from "../utils/index.mjs";
2
2
  import { getFilenameToChunkIdMap } from "./chunk-ids.mjs";
3
- import { createStackParser } from "./parsers/index.mjs";
4
3
  const MAX_CAUSE_RECURSION = 4;
5
4
  class ErrorPropertiesBuilder {
6
- constructor(coercers = [], parsers = [], modifiers = []){
5
+ constructor(coercers, stackParser, modifiers = []){
7
6
  this.coercers = coercers;
7
+ this.stackParser = stackParser;
8
8
  this.modifiers = modifiers;
9
- this.stackParser = createStackParser(...parsers);
10
9
  }
11
10
  buildFromUnknown(input, hint = {}) {
12
11
  const providedMechanism = hint && hint.mechanism;
@@ -1,4 +1,4 @@
1
1
  import { StackFrame } from '../types';
2
2
  export declare const UNKNOWN_FUNCTION = "?";
3
- export declare function createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame;
3
+ export declare function createFrame(platform: StackFrame['platform'], filename: string, func: string, lineno?: number, colno?: number): StackFrame;
4
4
  //# sourceMappingURL=base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/error-tracking/parsers/base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErC,eAAO,MAAM,gBAAgB,MAAM,CAAA;AAEnC,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,CAkBvG"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/error-tracking/parsers/base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErC,eAAO,MAAM,gBAAgB,MAAM,CAAA;AAEnC,wBAAgB,WAAW,CACzB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,EAChC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,UAAU,CAkBZ"}
@@ -29,9 +29,9 @@ __webpack_require__.d(__webpack_exports__, {
29
29
  });
30
30
  const index_js_namespaceObject = require("../../utils/index.js");
31
31
  const UNKNOWN_FUNCTION = '?';
32
- function createFrame(filename, func, lineno, colno) {
32
+ function createFrame(platform, filename, func, lineno, colno) {
33
33
  const frame = {
34
- platform: "web:javascript",
34
+ platform,
35
35
  filename,
36
36
  function: '<anonymous>' === func ? UNKNOWN_FUNCTION : func,
37
37
  in_app: true
@@ -1,8 +1,8 @@
1
1
  import { isUndefined } from "../../utils/index.mjs";
2
2
  const UNKNOWN_FUNCTION = '?';
3
- function createFrame(filename, func, lineno, colno) {
3
+ function createFrame(platform, filename, func, lineno, colno) {
4
4
  const frame = {
5
- platform: "web:javascript",
5
+ platform,
6
6
  filename,
7
7
  function: '<anonymous>' === func ? UNKNOWN_FUNCTION : func,
8
8
  in_app: true
@@ -31,11 +31,11 @@ const external_safari_js_namespaceObject = require("./safari.js");
31
31
  const chromeRegexNoFnName = /^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i;
32
32
  const chromeRegex = /^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i;
33
33
  const chromeEvalRegex = /\((\S*)(?::(\d+))(?::(\d+))\)/;
34
- const chromeStackLineParser = (line)=>{
34
+ const chromeStackLineParser = (line, platform)=>{
35
35
  const noFnParts = chromeRegexNoFnName.exec(line);
36
36
  if (noFnParts) {
37
37
  const [, filename, line, col] = noFnParts;
38
- return (0, external_base_js_namespaceObject.createFrame)(filename, external_base_js_namespaceObject.UNKNOWN_FUNCTION, +line, +col);
38
+ return (0, external_base_js_namespaceObject.createFrame)(platform, filename, external_base_js_namespaceObject.UNKNOWN_FUNCTION, +line, +col);
39
39
  }
40
40
  const parts = chromeRegex.exec(line);
41
41
  if (parts) {
@@ -49,7 +49,7 @@ const chromeStackLineParser = (line)=>{
49
49
  }
50
50
  }
51
51
  const [func, filename] = (0, external_safari_js_namespaceObject.extractSafariExtensionDetails)(parts[1] || external_base_js_namespaceObject.UNKNOWN_FUNCTION, parts[2]);
52
- return (0, external_base_js_namespaceObject.createFrame)(filename, func, parts[3] ? +parts[3] : void 0, parts[4] ? +parts[4] : void 0);
52
+ return (0, external_base_js_namespaceObject.createFrame)(platform, filename, func, parts[3] ? +parts[3] : void 0, parts[4] ? +parts[4] : void 0);
53
53
  }
54
54
  };
55
55
  exports.chromeStackLineParser = __webpack_exports__.chromeStackLineParser;
@@ -3,11 +3,11 @@ import { extractSafariExtensionDetails } from "./safari.mjs";
3
3
  const chromeRegexNoFnName = /^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i;
4
4
  const chromeRegex = /^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i;
5
5
  const chromeEvalRegex = /\((\S*)(?::(\d+))(?::(\d+))\)/;
6
- const chromeStackLineParser = (line)=>{
6
+ const chromeStackLineParser = (line, platform)=>{
7
7
  const noFnParts = chromeRegexNoFnName.exec(line);
8
8
  if (noFnParts) {
9
9
  const [, filename, line, col] = noFnParts;
10
- return createFrame(filename, UNKNOWN_FUNCTION, +line, +col);
10
+ return createFrame(platform, filename, UNKNOWN_FUNCTION, +line, +col);
11
11
  }
12
12
  const parts = chromeRegex.exec(line);
13
13
  if (parts) {
@@ -21,7 +21,7 @@ const chromeStackLineParser = (line)=>{
21
21
  }
22
22
  }
23
23
  const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);
24
- return createFrame(filename, func, parts[3] ? +parts[3] : void 0, parts[4] ? +parts[4] : void 0);
24
+ return createFrame(platform, filename, func, parts[3] ? +parts[3] : void 0, parts[4] ? +parts[4] : void 0);
25
25
  }
26
26
  };
27
27
  export { chromeStackLineParser };
@@ -1 +1 @@
1
- {"version":3,"file":"gecko.d.ts","sourceRoot":"","sources":["../../../src/error-tracking/parsers/gecko.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAS1C,eAAO,MAAM,oBAAoB,EAAE,eAyBlC,CAAA"}
1
+ {"version":3,"file":"gecko.d.ts","sourceRoot":"","sources":["../../../src/error-tracking/parsers/gecko.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,eAAe,EAAE,MAAM,UAAU,CAAA;AASpD,eAAO,MAAM,oBAAoB,EAAE,eAyBlC,CAAA"}
@@ -30,7 +30,7 @@ const external_base_js_namespaceObject = require("./base.js");
30
30
  const external_safari_js_namespaceObject = require("./safari.js");
31
31
  const geckoREgex = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i;
32
32
  const geckoEvalRegex = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i;
33
- const geckoStackLineParser = (line)=>{
33
+ const geckoStackLineParser = (line, platform)=>{
34
34
  const parts = geckoREgex.exec(line);
35
35
  if (parts) {
36
36
  const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;
@@ -46,7 +46,7 @@ const geckoStackLineParser = (line)=>{
46
46
  let filename = parts[3];
47
47
  let func = parts[1] || external_base_js_namespaceObject.UNKNOWN_FUNCTION;
48
48
  [func, filename] = (0, external_safari_js_namespaceObject.extractSafariExtensionDetails)(func, filename);
49
- return (0, external_base_js_namespaceObject.createFrame)(filename, func, parts[4] ? +parts[4] : void 0, parts[5] ? +parts[5] : void 0);
49
+ return (0, external_base_js_namespaceObject.createFrame)(platform, filename, func, parts[4] ? +parts[4] : void 0, parts[5] ? +parts[5] : void 0);
50
50
  }
51
51
  };
52
52
  exports.geckoStackLineParser = __webpack_exports__.geckoStackLineParser;
@@ -2,7 +2,7 @@ import { UNKNOWN_FUNCTION, createFrame } from "./base.mjs";
2
2
  import { extractSafariExtensionDetails } from "./safari.mjs";
3
3
  const geckoREgex = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i;
4
4
  const geckoEvalRegex = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i;
5
- const geckoStackLineParser = (line)=>{
5
+ const geckoStackLineParser = (line, platform)=>{
6
6
  const parts = geckoREgex.exec(line);
7
7
  if (parts) {
8
8
  const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;
@@ -18,7 +18,7 @@ const geckoStackLineParser = (line)=>{
18
18
  let filename = parts[3];
19
19
  let func = parts[1] || UNKNOWN_FUNCTION;
20
20
  [func, filename] = extractSafariExtensionDetails(func, filename);
21
- return createFrame(filename, func, parts[4] ? +parts[4] : void 0, parts[5] ? +parts[5] : void 0);
21
+ return createFrame(platform, filename, func, parts[4] ? +parts[4] : void 0, parts[5] ? +parts[5] : void 0);
22
22
  }
23
23
  };
24
24
  export { geckoStackLineParser };
@@ -1,9 +1,9 @@
1
- import { StackFrame, StackLineParser, StackParser } from '../types';
1
+ import { Platform, StackFrame, StackLineParser, StackParser } from '../types';
2
2
  export { chromeStackLineParser } from './chrome';
3
3
  export { winjsStackLineParser } from './winjs';
4
4
  export { geckoStackLineParser } from './gecko';
5
5
  export { opera10StackLineParser, opera11StackLineParser } from './opera';
6
6
  export { nodeStackLineParser } from './node';
7
7
  export declare function reverseAndStripFrames(stack: ReadonlyArray<StackFrame>): StackFrame[];
8
- export declare function createStackParser(...parsers: StackLineParser[]): StackParser;
8
+ export declare function createStackParser(platform: Platform, ...parsers: StackLineParser[]): StackParser;
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/error-tracking/parsers/index.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAK5C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,UAAU,EAAE,CAcpF;AAMD,wBAAgB,iBAAiB,CAAC,GAAG,OAAO,EAAE,eAAe,EAAE,GAAG,WAAW,CA0C5E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/error-tracking/parsers/index.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAK5C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,UAAU,EAAE,CAcpF;AAMD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,GAAG,WAAW,CAwChG"}
@@ -54,7 +54,7 @@ function reverseAndStripFrames(stack) {
54
54
  function getLastStackFrame(arr) {
55
55
  return arr[arr.length - 1] || {};
56
56
  }
57
- function createStackParser(...parsers) {
57
+ function createStackParser(platform, ...parsers) {
58
58
  return (stack, skipFirstLines = 0)=>{
59
59
  const frames = [];
60
60
  const lines = stack.split('\n');
@@ -64,7 +64,7 @@ function createStackParser(...parsers) {
64
64
  const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;
65
65
  if (!cleanedLine.match(/\S*Error: /)) {
66
66
  for (const parser of parsers){
67
- const frame = parser(cleanedLine);
67
+ const frame = parser(cleanedLine, platform);
68
68
  if (frame) {
69
69
  frames.push(frame);
70
70
  break;
@@ -19,7 +19,7 @@ function reverseAndStripFrames(stack) {
19
19
  function getLastStackFrame(arr) {
20
20
  return arr[arr.length - 1] || {};
21
21
  }
22
- function createStackParser(...parsers) {
22
+ function createStackParser(platform, ...parsers) {
23
23
  return (stack, skipFirstLines = 0)=>{
24
24
  const frames = [];
25
25
  const lines = stack.split('\n');
@@ -29,7 +29,7 @@ function createStackParser(...parsers) {
29
29
  const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;
30
30
  if (!cleanedLine.match(/\S*Error: /)) {
31
31
  for (const parser of parsers){
32
- const frame = parser(cleanedLine);
32
+ const frame = parser(cleanedLine, platform);
33
33
  if (frame) {
34
34
  frames.push(frame);
35
35
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/error-tracking/parsers/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAO1C,eAAO,MAAM,mBAAmB,EAAE,eA4EjC,CAAA"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/error-tracking/parsers/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,eAAe,EAAE,MAAM,UAAU,CAAA;AAOpD,eAAO,MAAM,mBAAmB,EAAE,eA4EjC,CAAA"}
@@ -29,7 +29,7 @@ __webpack_require__.d(__webpack_exports__, {
29
29
  const external_base_js_namespaceObject = require("./base.js");
30
30
  const FILENAME_MATCH = /^\s*[-]{4,}$/;
31
31
  const FULL_MATCH = /at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/;
32
- const nodeStackLineParser = (line)=>{
32
+ const nodeStackLineParser = (line, platform)=>{
33
33
  const lineMatch = line.match(FULL_MATCH);
34
34
  if (lineMatch) {
35
35
  let object;
@@ -75,12 +75,12 @@ const nodeStackLineParser = (line)=>{
75
75
  lineno: _parseIntOrUndefined(lineMatch[3]),
76
76
  colno: _parseIntOrUndefined(lineMatch[4]),
77
77
  in_app: filenameIsInApp(filename || '', isNative),
78
- platform: "node:javascript"
78
+ platform: platform
79
79
  };
80
80
  }
81
81
  if (line.match(FILENAME_MATCH)) return {
82
82
  filename: line,
83
- platform: "node:javascript"
83
+ platform: platform
84
84
  };
85
85
  };
86
86
  function filenameIsInApp(filename, isNative = false) {
@@ -1,7 +1,7 @@
1
1
  import { UNKNOWN_FUNCTION } from "./base.mjs";
2
2
  const FILENAME_MATCH = /^\s*[-]{4,}$/;
3
3
  const FULL_MATCH = /at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/;
4
- const nodeStackLineParser = (line)=>{
4
+ const nodeStackLineParser = (line, platform)=>{
5
5
  const lineMatch = line.match(FULL_MATCH);
6
6
  if (lineMatch) {
7
7
  let object;
@@ -47,12 +47,12 @@ const nodeStackLineParser = (line)=>{
47
47
  lineno: _parseIntOrUndefined(lineMatch[3]),
48
48
  colno: _parseIntOrUndefined(lineMatch[4]),
49
49
  in_app: filenameIsInApp(filename || '', isNative),
50
- platform: "node:javascript"
50
+ platform: platform
51
51
  };
52
52
  }
53
53
  if (line.match(FILENAME_MATCH)) return {
54
54
  filename: line,
55
- platform: "node:javascript"
55
+ platform: platform
56
56
  };
57
57
  };
58
58
  function filenameIsInApp(filename, isNative = false) {
@@ -1 +1 @@
1
- {"version":3,"file":"opera.d.ts","sourceRoot":"","sources":["../../../src/error-tracking/parsers/opera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAK1C,eAAO,MAAM,sBAAsB,EAAE,eAGpC,CAAA;AAMD,eAAO,MAAM,sBAAsB,EAAE,eAGpC,CAAA"}
1
+ {"version":3,"file":"opera.d.ts","sourceRoot":"","sources":["../../../src/error-tracking/parsers/opera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAK1C,eAAO,MAAM,sBAAsB,EAAE,eAGpC,CAAA;AAMD,eAAO,MAAM,sBAAsB,EAAE,eAKpC,CAAA"}
@@ -29,14 +29,14 @@ __webpack_require__.d(__webpack_exports__, {
29
29
  });
30
30
  const external_base_js_namespaceObject = require("./base.js");
31
31
  const opera10Regex = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i;
32
- const opera10StackLineParser = (line)=>{
32
+ const opera10StackLineParser = (line, platform)=>{
33
33
  const parts = opera10Regex.exec(line);
34
- return parts ? (0, external_base_js_namespaceObject.createFrame)(parts[2], parts[3] || external_base_js_namespaceObject.UNKNOWN_FUNCTION, +parts[1]) : void 0;
34
+ return parts ? (0, external_base_js_namespaceObject.createFrame)(platform, parts[2], parts[3] || external_base_js_namespaceObject.UNKNOWN_FUNCTION, +parts[1]) : void 0;
35
35
  };
36
36
  const opera11Regex = / line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i;
37
- const opera11StackLineParser = (line)=>{
37
+ const opera11StackLineParser = (line, platform)=>{
38
38
  const parts = opera11Regex.exec(line);
39
- return parts ? (0, external_base_js_namespaceObject.createFrame)(parts[5], parts[3] || parts[4] || external_base_js_namespaceObject.UNKNOWN_FUNCTION, +parts[1], +parts[2]) : void 0;
39
+ return parts ? (0, external_base_js_namespaceObject.createFrame)(platform, parts[5], parts[3] || parts[4] || external_base_js_namespaceObject.UNKNOWN_FUNCTION, +parts[1], +parts[2]) : void 0;
40
40
  };
41
41
  exports.opera10StackLineParser = __webpack_exports__.opera10StackLineParser;
42
42
  exports.opera11StackLineParser = __webpack_exports__.opera11StackLineParser;
@@ -1,12 +1,12 @@
1
1
  import { UNKNOWN_FUNCTION, createFrame } from "./base.mjs";
2
2
  const opera10Regex = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i;
3
- const opera10StackLineParser = (line)=>{
3
+ const opera10StackLineParser = (line, platform)=>{
4
4
  const parts = opera10Regex.exec(line);
5
- return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : void 0;
5
+ return parts ? createFrame(platform, parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : void 0;
6
6
  };
7
7
  const opera11Regex = / line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i;
8
- const opera11StackLineParser = (line)=>{
8
+ const opera11StackLineParser = (line, platform)=>{
9
9
  const parts = opera11Regex.exec(line);
10
- return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : void 0;
10
+ return parts ? createFrame(platform, parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : void 0;
11
11
  };
12
12
  export { opera10StackLineParser, opera11StackLineParser };
@@ -28,9 +28,9 @@ __webpack_require__.d(__webpack_exports__, {
28
28
  });
29
29
  const external_base_js_namespaceObject = require("./base.js");
30
30
  const winjsRegex = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i;
31
- const winjsStackLineParser = (line)=>{
31
+ const winjsStackLineParser = (line, platform)=>{
32
32
  const parts = winjsRegex.exec(line);
33
- return parts ? (0, external_base_js_namespaceObject.createFrame)(parts[2], parts[1] || external_base_js_namespaceObject.UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : void 0) : void 0;
33
+ return parts ? (0, external_base_js_namespaceObject.createFrame)(platform, parts[2], parts[1] || external_base_js_namespaceObject.UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : void 0) : void 0;
34
34
  };
35
35
  exports.winjsStackLineParser = __webpack_exports__.winjsStackLineParser;
36
36
  for(var __webpack_i__ in __webpack_exports__)if (-1 === [
@@ -1,7 +1,7 @@
1
1
  import { UNKNOWN_FUNCTION, createFrame } from "./base.mjs";
2
2
  const winjsRegex = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i;
3
- const winjsStackLineParser = (line)=>{
3
+ const winjsStackLineParser = (line, platform)=>{
4
4
  const parts = winjsRegex.exec(line);
5
- return parts ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : void 0) : void 0;
5
+ return parts ? createFrame(platform, parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : void 0) : void 0;
6
6
  };
7
7
  export { winjsStackLineParser };
@@ -35,10 +35,11 @@ export interface Mechanism {
35
35
  }
36
36
  export type GetModuleFn = (filename: string | undefined) => string | undefined;
37
37
  export type StackParser = (stack: string, skipFirstLines?: number) => StackFrame[];
38
- export type StackLineParser = (line: string) => StackFrame | undefined;
38
+ export type StackLineParser = (line: string, platform: Platform) => StackFrame | undefined;
39
39
  export type StackFrameModifierFn = (frames: StackFrame[]) => Promise<StackFrame[]>;
40
+ export type Platform = 'node:javascript' | 'web:javascript' | 'hermes';
40
41
  export interface StackFrame {
41
- platform: string;
42
+ platform: Platform;
42
43
  filename?: string;
43
44
  function?: string;
44
45
  module?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/error-tracking/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/error-tracking/types.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ export declare const getFeatureFlagValue: (detail: FeatureFlagDetail | undefined
22
22
  export declare const parsePayload: (response: any) => any;
23
23
  /**
24
24
  * Get the normalized flag details from the flags and payloads.
25
- * This is used to convert things like boostrap and stored feature flags and payloads to the v4 format.
25
+ * This is used to convert things like bootstrap and stored feature flags and payloads to the v4 format.
26
26
  * This helps us ensure backwards compatibility.
27
27
  * If a key exists in the featureFlagPayloads that is not in the featureFlags, we treat it as a true feature flag.
28
28
  *
@@ -1,2 +1,3 @@
1
1
  export * from './spawn-local';
2
+ export { resolveBinaryPath } from './utils';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/process/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/process/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA"}
@@ -2,6 +2,9 @@
2
2
  var __webpack_modules__ = {
3
3
  "./spawn-local": function(module) {
4
4
  module.exports = require("./spawn-local.js");
5
+ },
6
+ "./utils?198b": function(module) {
7
+ module.exports = require("./utils.js");
5
8
  }
6
9
  };
7
10
  var __webpack_module_cache__ = {};
@@ -47,14 +50,24 @@ function __webpack_require__(moduleId) {
47
50
  var __webpack_exports__ = {};
48
51
  (()=>{
49
52
  __webpack_require__.r(__webpack_exports__);
53
+ __webpack_require__.d(__webpack_exports__, {
54
+ resolveBinaryPath: ()=>_utils__WEBPACK_IMPORTED_MODULE_1__.resolveBinaryPath
55
+ });
50
56
  var _spawn_local__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./spawn-local");
51
57
  var __WEBPACK_REEXPORT_OBJECT__ = {};
52
- for(var __WEBPACK_IMPORT_KEY__ in _spawn_local__WEBPACK_IMPORTED_MODULE_0__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
58
+ for(var __WEBPACK_IMPORT_KEY__ in _spawn_local__WEBPACK_IMPORTED_MODULE_0__)if ([
59
+ "resolveBinaryPath",
60
+ "default"
61
+ ].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
53
62
  return _spawn_local__WEBPACK_IMPORTED_MODULE_0__[key];
54
63
  }).bind(0, __WEBPACK_IMPORT_KEY__);
55
64
  __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
65
+ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./utils?198b");
56
66
  })();
57
- for(var __webpack_i__ in __webpack_exports__)exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
67
+ exports.resolveBinaryPath = __webpack_exports__.resolveBinaryPath;
68
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
69
+ "resolveBinaryPath"
70
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
58
71
  Object.defineProperty(exports, '__esModule', {
59
72
  value: true
60
73
  });
@@ -1 +1,3 @@
1
+ import { resolveBinaryPath } from "./utils.mjs";
1
2
  export * from "./spawn-local.mjs";
3
+ export { resolveBinaryPath };
@@ -1,8 +1,6 @@
1
- export declare function spawnLocal(binaryName: string, args: string[], options: {
1
+ export declare function spawnLocal(executable: string, args: string[], options: {
2
2
  env: NodeJS.ProcessEnv;
3
3
  stdio: 'inherit' | 'ignore';
4
- resolveFrom: string;
5
4
  cwd: string;
6
- onBinaryFound?: (binaryLocation: string) => void;
7
5
  }): Promise<void>;
8
6
  //# sourceMappingURL=spawn-local.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spawn-local.d.ts","sourceRoot":"","sources":["../../src/process/spawn-local.ts"],"names":[],"mappings":"AAGA,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IACP,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAA;IAE3B,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAA;CACjD,GACA,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
1
+ {"version":3,"file":"spawn-local.d.ts","sourceRoot":"","sources":["../../src/process/spawn-local.ts"],"names":[],"mappings":"AAEA,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IACP,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC3B,GAAG,EAAE,MAAM,CAAA;CACZ,GACA,OAAO,CAAC,IAAI,CAAC,CAoBf"}
@@ -27,20 +27,11 @@ __webpack_require__.d(__webpack_exports__, {
27
27
  spawnLocal: ()=>spawnLocal
28
28
  });
29
29
  const external_cross_spawn_namespaceObject = require("cross-spawn");
30
- const external_utils_js_namespaceObject = require("./utils.js");
31
- async function spawnLocal(binaryName, args, options) {
32
- let binaryLocation;
33
- try {
34
- binaryLocation = (0, external_utils_js_namespaceObject.resolveBinaryPath)(options.env.PATH ?? '', options.resolveFrom, binaryName);
35
- options.onBinaryFound?.(binaryLocation);
36
- } catch (e) {
37
- console.error(e);
38
- throw new Error(`Binary ${binaryName} not found. Make sure postinstall script was allowed if it installs the binary`);
39
- }
40
- const child = (0, external_cross_spawn_namespaceObject.spawn)(binaryLocation, [
30
+ async function spawnLocal(executable, args, options) {
31
+ const child = (0, external_cross_spawn_namespaceObject.spawn)(executable, [
41
32
  ...args
42
33
  ], {
43
- stdio: options?.stdio ?? 'inherit',
34
+ stdio: options.stdio ?? 'inherit',
44
35
  env: options.env,
45
36
  cwd: options.cwd
46
37
  });
@@ -1,18 +1,9 @@
1
1
  import { spawn } from "cross-spawn";
2
- import { resolveBinaryPath } from "./utils.mjs";
3
- async function spawnLocal(binaryName, args, options) {
4
- let binaryLocation;
5
- try {
6
- binaryLocation = resolveBinaryPath(options.env.PATH ?? '', options.resolveFrom, binaryName);
7
- options.onBinaryFound?.(binaryLocation);
8
- } catch (e) {
9
- console.error(e);
10
- throw new Error(`Binary ${binaryName} not found. Make sure postinstall script was allowed if it installs the binary`);
11
- }
12
- const child = spawn(binaryLocation, [
2
+ async function spawnLocal(executable, args, options) {
3
+ const child = spawn(executable, [
13
4
  ...args
14
5
  ], {
15
- stdio: options?.stdio ?? 'inherit',
6
+ stdio: options.stdio ?? 'inherit',
16
7
  env: options.env,
17
8
  cwd: options.cwd
18
9
  });
@@ -1,3 +1,6 @@
1
1
  export declare const buildLocalBinaryPaths: (cwd: string) => string[];
2
- export declare function resolveBinaryPath(envPath: string, cwd: string, binName: string): string;
2
+ export declare function resolveBinaryPath(binName: string, options: {
3
+ path: string;
4
+ cwd: string;
5
+ }): string;
3
6
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/process/utils.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,KAAG,MAAM,EAKzD,CAAA;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAWvF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/process/utils.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,KAAG,MAAM,EAKzD,CAAA;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,IAAI,EAAE,MAAM,CAAA;IAEZ,GAAG,EAAE,MAAM,CAAA;CACZ,GACA,MAAM,CAWR"}
@@ -55,9 +55,9 @@ const buildLocalBinaryPaths = (cwd)=>{
55
55
  const localPaths = getLocalPaths(external_node_path_default().resolve(cwd)).map((localPath)=>external_node_path_default().join(localPath, 'node_modules/.bin'));
56
56
  return localPaths;
57
57
  };
58
- function resolveBinaryPath(envPath, cwd, binName) {
59
- const envLocations = envPath.split(external_node_path_default().delimiter);
60
- const localLocations = buildLocalBinaryPaths(cwd);
58
+ function resolveBinaryPath(binName, options) {
59
+ const envLocations = options.path.split(external_node_path_default().delimiter);
60
+ const localLocations = buildLocalBinaryPaths(options.cwd);
61
61
  const directories = [
62
62
  ...new Set([
63
63
  ...localLocations,
@@ -15,9 +15,9 @@ const buildLocalBinaryPaths = (cwd)=>{
15
15
  const localPaths = getLocalPaths(node_path.resolve(cwd)).map((localPath)=>node_path.join(localPath, 'node_modules/.bin'));
16
16
  return localPaths;
17
17
  };
18
- function resolveBinaryPath(envPath, cwd, binName) {
19
- const envLocations = envPath.split(node_path.delimiter);
20
- const localLocations = buildLocalBinaryPaths(cwd);
18
+ function resolveBinaryPath(binName, options) {
19
+ const envLocations = options.path.split(node_path.delimiter);
20
+ const localLocations = buildLocalBinaryPaths(options.cwd);
21
21
  const directories = [
22
22
  ...new Set([
23
23
  ...localLocations,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@posthog/core",
3
- "version": "1.5.1",
3
+ "version": "1.5.3",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -50,6 +50,7 @@
50
50
  "devDependencies": {
51
51
  "@rslib/core": "^0.10.5",
52
52
  "@types/cross-spawn": "^6.0.6",
53
+ "@types/jest": "^29.5.0",
53
54
  "jest": "^29.7.0",
54
55
  "@posthog-tooling/tsconfig-base": "1.0.0"
55
56
  },
@@ -1,13 +1,18 @@
1
1
  import { ErrorPropertiesBuilder } from './error-properties-builder'
2
- import { chromeStackLineParser } from './parsers'
2
+ import { chromeStackLineParser, createStackParser } from './parsers'
3
3
  import { StackFrame } from './types'
4
4
 
5
5
  describe('ErrorPropertiesBuilder', () => {
6
6
  describe('coerceUnknown', () => {
7
- const errorPropertiesBuilder = new ErrorPropertiesBuilder([], [chromeStackLineParser], [])
7
+ const errorPropertiesBuilder = new ErrorPropertiesBuilder(
8
+ [],
9
+ createStackParser('web:javascript', chromeStackLineParser),
10
+ []
11
+ )
8
12
 
9
13
  function parseStack(error: Error): StackFrame[] | undefined {
10
14
  const ctx = {}
15
+ //@ts-expect-error: testing private method
11
16
  const exception = errorPropertiesBuilder.parseStacktrace(
12
17
  {
13
18
  type: 'Error',
@@ -22,15 +22,11 @@ import {
22
22
  const MAX_CAUSE_RECURSION = 4
23
23
 
24
24
  export class ErrorPropertiesBuilder {
25
- stackParser: StackParser
26
-
27
25
  constructor(
28
- private coercers: ErrorTrackingCoercer<any>[] = [],
29
- parsers: StackLineParser[] = [],
26
+ private coercers: ErrorTrackingCoercer<any>[],
27
+ private stackParser: StackParser,
30
28
  private modifiers: StackFrameModifierFn[] = []
31
- ) {
32
- this.stackParser = createStackParser(...parsers)
33
- }
29
+ ) {}
34
30
 
35
31
  buildFromUnknown(input: unknown, hint: EventHint = {}): ErrorProperties {
36
32
  const providedMechanism = hint && hint.mechanism
@@ -3,10 +3,16 @@ import { StackFrame } from '../types'
3
3
 
4
4
  export const UNKNOWN_FUNCTION = '?'
5
5
 
6
- export function createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {
6
+ export function createFrame(
7
+ platform: StackFrame['platform'],
8
+ filename: string,
9
+ func: string,
10
+ lineno?: number,
11
+ colno?: number
12
+ ): StackFrame {
7
13
  const frame: StackFrame = {
8
14
  // TODO: should be a variable here
9
- platform: 'web:javascript',
15
+ platform,
10
16
  filename,
11
17
  function: func === '<anonymous>' ? UNKNOWN_FUNCTION : func,
12
18
  in_app: true, // All browser frames are considered in_app
@@ -17,13 +17,13 @@ const chromeEvalRegex = /\((\S*)(?::(\d+))(?::(\d+))\)/
17
17
  // Chromium based browsers: Chrome, Brave, new Opera, new Edge
18
18
  // We cannot call this variable `chrome` because it can conflict with global `chrome` variable in certain environments
19
19
  // See: https://github.com/getsentry/sentry-javascript/issues/6880
20
- export const chromeStackLineParser: StackLineParser = (line) => {
20
+ export const chromeStackLineParser: StackLineParser = (line, platform) => {
21
21
  // If the stack line has no function name, we need to parse it differently
22
22
  const noFnParts = chromeRegexNoFnName.exec(line) as null | [string, string, string, string]
23
23
 
24
24
  if (noFnParts) {
25
25
  const [, filename, line, col] = noFnParts
26
- return createFrame(filename, UNKNOWN_FUNCTION, +line, +col)
26
+ return createFrame(platform, filename, UNKNOWN_FUNCTION, +line, +col)
27
27
  }
28
28
 
29
29
  const parts = chromeRegex.exec(line) as null | [string, string, string, string, string]
@@ -46,7 +46,7 @@ export const chromeStackLineParser: StackLineParser = (line) => {
46
46
  // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)
47
47
  const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2])
48
48
 
49
- return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined)
49
+ return createFrame(platform, filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined)
50
50
  }
51
51
 
52
52
  return
@@ -1,7 +1,7 @@
1
1
  // gecko regex: `(?:bundle|\d+\.js)`: `bundle` is for react native, `\d+\.js` also but specifically for ram bundles because it
2
2
  // generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js
3
3
 
4
- import { StackLineParser } from '../types'
4
+ import { Platform, StackLineParser } from '../types'
5
5
  import { createFrame, UNKNOWN_FUNCTION } from './base'
6
6
  import { extractSafariExtensionDetails } from './safari'
7
7
 
@@ -10,7 +10,7 @@ const geckoREgex =
10
10
  /^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i
11
11
  const geckoEvalRegex = /(\S+) line (\d+)(?: > eval line \d+)* > eval/i
12
12
 
13
- export const geckoStackLineParser: StackLineParser = (line) => {
13
+ export const geckoStackLineParser: StackLineParser = (line: string, platform: Platform) => {
14
14
  const parts = geckoREgex.exec(line) as null | [string, string, string, string, string, string]
15
15
 
16
16
  if (parts) {
@@ -31,7 +31,7 @@ export const geckoStackLineParser: StackLineParser = (line) => {
31
31
  let func = parts[1] || UNKNOWN_FUNCTION
32
32
  ;[func, filename] = extractSafariExtensionDetails(func, filename)
33
33
 
34
- return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined)
34
+ return createFrame(platform, filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined)
35
35
  }
36
36
 
37
37
  return
@@ -28,7 +28,7 @@
28
28
  // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
29
29
  // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30
30
 
31
- import { StackFrame, StackLineParser, StackParser } from '../types'
31
+ import { Platform, StackFrame, StackLineParser, StackParser } from '../types'
32
32
  import { UNKNOWN_FUNCTION } from './base'
33
33
  export { chromeStackLineParser } from './chrome'
34
34
  export { winjsStackLineParser } from './winjs'
@@ -59,9 +59,7 @@ function getLastStackFrame(arr: StackFrame[]): StackFrame {
59
59
  return arr[arr.length - 1] || {}
60
60
  }
61
61
 
62
- export function createStackParser(...parsers: StackLineParser[]): StackParser {
63
- // const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map((p) => p[1])
64
-
62
+ export function createStackParser(platform: Platform, ...parsers: StackLineParser[]): StackParser {
65
63
  return (stack: string, skipFirstLines: number = 0): StackFrame[] => {
66
64
  const frames: StackFrame[] = []
67
65
  const lines = stack.split('\n')
@@ -87,7 +85,7 @@ export function createStackParser(...parsers: StackLineParser[]): StackParser {
87
85
  }
88
86
 
89
87
  for (const parser of parsers) {
90
- const frame = parser(cleanedLine)
88
+ const frame = parser(cleanedLine, platform)
91
89
  if (frame) {
92
90
  frames.push(frame)
93
91
  break
@@ -1,11 +1,11 @@
1
- import { StackLineParser } from '../types'
1
+ import { Platform, StackLineParser } from '../types'
2
2
  import { UNKNOWN_FUNCTION } from './base'
3
3
 
4
4
  /** Node Stack line parser */
5
5
  const FILENAME_MATCH = /^\s*[-]{4,}$/
6
6
  const FULL_MATCH = /at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/
7
7
 
8
- export const nodeStackLineParser: StackLineParser = (line: string) => {
8
+ export const nodeStackLineParser: StackLineParser = (line: string, platform: Platform) => {
9
9
  const lineMatch = line.match(FULL_MATCH)
10
10
 
11
11
  if (lineMatch) {
@@ -69,14 +69,14 @@ export const nodeStackLineParser: StackLineParser = (line: string) => {
69
69
  lineno: _parseIntOrUndefined(lineMatch[3]),
70
70
  colno: _parseIntOrUndefined(lineMatch[4]),
71
71
  in_app: filenameIsInApp(filename || '', isNative),
72
- platform: 'node:javascript',
72
+ platform: platform,
73
73
  }
74
74
  }
75
75
 
76
76
  if (line.match(FILENAME_MATCH)) {
77
77
  return {
78
78
  filename: line,
79
- platform: 'node:javascript',
79
+ platform: platform,
80
80
  }
81
81
  }
82
82
 
@@ -3,16 +3,18 @@ import { createFrame, UNKNOWN_FUNCTION } from './base'
3
3
 
4
4
  const opera10Regex = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i
5
5
 
6
- export const opera10StackLineParser: StackLineParser = (line) => {
6
+ export const opera10StackLineParser: StackLineParser = (line, platform) => {
7
7
  const parts = opera10Regex.exec(line) as null | [string, string, string, string]
8
- return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined
8
+ return parts ? createFrame(platform, parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined
9
9
  }
10
10
 
11
11
  // export const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10]
12
12
 
13
13
  const opera11Regex = / line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i
14
14
 
15
- export const opera11StackLineParser: StackLineParser = (line) => {
15
+ export const opera11StackLineParser: StackLineParser = (line, platform) => {
16
16
  const parts = opera11Regex.exec(line) as null | [string, string, string, string, string, string]
17
- return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined
17
+ return parts
18
+ ? createFrame(platform, parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2])
19
+ : undefined
18
20
  }
@@ -3,10 +3,10 @@ import { createFrame, UNKNOWN_FUNCTION } from './base'
3
3
 
4
4
  const winjsRegex = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i
5
5
 
6
- export const winjsStackLineParser: StackLineParser = (line) => {
6
+ export const winjsStackLineParser: StackLineParser = (line, platform) => {
7
7
  const parts = winjsRegex.exec(line) as null | [string, string, string, string, string]
8
8
 
9
9
  return parts
10
- ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)
10
+ ? createFrame(platform, parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)
11
11
  : undefined
12
12
  }
@@ -47,12 +47,14 @@ export interface Mechanism {
47
47
  export type GetModuleFn = (filename: string | undefined) => string | undefined
48
48
 
49
49
  export type StackParser = (stack: string, skipFirstLines?: number) => StackFrame[]
50
- export type StackLineParser = (line: string) => StackFrame | undefined
50
+ export type StackLineParser = (line: string, platform: Platform) => StackFrame | undefined
51
51
 
52
52
  export type StackFrameModifierFn = (frames: StackFrame[]) => Promise<StackFrame[]>
53
53
 
54
+ export type Platform = 'node:javascript' | 'web:javascript' | 'hermes'
55
+
54
56
  export interface StackFrame {
55
- platform: string
57
+ platform: Platform
56
58
  filename?: string
57
59
  function?: string
58
60
  module?: string
@@ -149,7 +149,7 @@ export const parsePayload = (response: any): any => {
149
149
 
150
150
  /**
151
151
  * Get the normalized flag details from the flags and payloads.
152
- * This is used to convert things like boostrap and stored feature flags and payloads to the v4 format.
152
+ * This is used to convert things like bootstrap and stored feature flags and payloads to the v4 format.
153
153
  * This helps us ensure backwards compatibility.
154
154
  * If a key exists in the featureFlagPayloads that is not in the featureFlags, we treat it as a true feature flag.
155
155
  *
@@ -1 +1,2 @@
1
1
  export * from './spawn-local'
2
+ export { resolveBinaryPath } from './utils'
@@ -1,31 +1,16 @@
1
1
  import { spawn } from 'cross-spawn'
2
- import { resolveBinaryPath } from './utils'
3
2
 
4
3
  export async function spawnLocal(
5
- binaryName: string,
4
+ executable: string,
6
5
  args: string[],
7
6
  options: {
8
7
  env: NodeJS.ProcessEnv
9
8
  stdio: 'inherit' | 'ignore'
10
- // We start traversing the file system tree from this directory and we go up until we find the binary
11
- resolveFrom: string
12
9
  cwd: string
13
- onBinaryFound?: (binaryLocation: string) => void
14
10
  }
15
11
  ): Promise<void> {
16
- let binaryLocation
17
- try {
18
- binaryLocation = resolveBinaryPath(options.env.PATH ?? '', options.resolveFrom, binaryName)
19
- options.onBinaryFound?.(binaryLocation)
20
- } catch (e) {
21
- console.error(e)
22
- throw new Error(
23
- `Binary ${binaryName} not found. Make sure postinstall script was allowed if it installs the binary`
24
- )
25
- }
26
-
27
- const child = spawn(binaryLocation, [...args], {
28
- stdio: options?.stdio ?? 'inherit',
12
+ const child = spawn(executable, [...args], {
13
+ stdio: options.stdio ?? 'inherit',
29
14
  env: options.env,
30
15
  cwd: options.cwd,
31
16
  })
@@ -27,9 +27,16 @@ export const buildLocalBinaryPaths = (cwd: string): string[] => {
27
27
  return localPaths
28
28
  }
29
29
 
30
- export function resolveBinaryPath(envPath: string, cwd: string, binName: string): string {
31
- const envLocations = envPath.split(path.delimiter)
32
- const localLocations = buildLocalBinaryPaths(cwd)
30
+ export function resolveBinaryPath(
31
+ binName: string,
32
+ options: {
33
+ path: string
34
+ // We start traversing the file system tree from this directory and we go up until we find the binary
35
+ cwd: string
36
+ }
37
+ ): string {
38
+ const envLocations = options.path.split(path.delimiter)
39
+ const localLocations = buildLocalBinaryPaths(options.cwd)
33
40
  const directories = [...new Set([...localLocations, ...envLocations])]
34
41
  for (const directory of directories) {
35
42
  const binaryPath = path.join(directory, binName)
@@ -1 +0,0 @@
1
- //# sourceMappingURL=react-native.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-native.d.ts","sourceRoot":"","sources":["../../../src/error-tracking/parsers/react-native.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- var __webpack_exports__ = {};
2
- for(var __webpack_i__ in __webpack_exports__)exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
3
- Object.defineProperty(exports, '__esModule', {
4
- value: true
5
- });
File without changes
File without changes