@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.
- package/dist/error-tracking/error-properties-builder.d.ts +3 -3
- package/dist/error-tracking/error-properties-builder.d.ts.map +1 -1
- package/dist/error-tracking/error-properties-builder.js +2 -3
- package/dist/error-tracking/error-properties-builder.mjs +2 -3
- package/dist/error-tracking/parsers/base.d.ts +1 -1
- package/dist/error-tracking/parsers/base.d.ts.map +1 -1
- package/dist/error-tracking/parsers/base.js +2 -2
- package/dist/error-tracking/parsers/base.mjs +2 -2
- package/dist/error-tracking/parsers/chrome.js +3 -3
- package/dist/error-tracking/parsers/chrome.mjs +3 -3
- package/dist/error-tracking/parsers/gecko.d.ts.map +1 -1
- package/dist/error-tracking/parsers/gecko.js +2 -2
- package/dist/error-tracking/parsers/gecko.mjs +2 -2
- package/dist/error-tracking/parsers/index.d.ts +2 -2
- package/dist/error-tracking/parsers/index.d.ts.map +1 -1
- package/dist/error-tracking/parsers/index.js +2 -2
- package/dist/error-tracking/parsers/index.mjs +2 -2
- package/dist/error-tracking/parsers/node.d.ts.map +1 -1
- package/dist/error-tracking/parsers/node.js +3 -3
- package/dist/error-tracking/parsers/node.mjs +3 -3
- package/dist/error-tracking/parsers/opera.d.ts.map +1 -1
- package/dist/error-tracking/parsers/opera.js +4 -4
- package/dist/error-tracking/parsers/opera.mjs +4 -4
- package/dist/error-tracking/parsers/winjs.js +2 -2
- package/dist/error-tracking/parsers/winjs.mjs +2 -2
- package/dist/error-tracking/types.d.ts +3 -2
- package/dist/error-tracking/types.d.ts.map +1 -1
- package/dist/featureFlagUtils.d.ts +1 -1
- package/dist/process/index.d.ts +1 -0
- package/dist/process/index.d.ts.map +1 -1
- package/dist/process/index.js +15 -2
- package/dist/process/index.mjs +2 -0
- package/dist/process/spawn-local.d.ts +1 -3
- package/dist/process/spawn-local.d.ts.map +1 -1
- package/dist/process/spawn-local.js +3 -12
- package/dist/process/spawn-local.mjs +3 -12
- package/dist/process/utils.d.ts +4 -1
- package/dist/process/utils.d.ts.map +1 -1
- package/dist/process/utils.js +3 -3
- package/dist/process/utils.mjs +3 -3
- package/package.json +2 -1
- package/src/error-tracking/error-properties-builder.parse.spec.ts +7 -2
- package/src/error-tracking/error-properties-builder.ts +3 -7
- package/src/error-tracking/parsers/base.ts +8 -2
- package/src/error-tracking/parsers/chrome.ts +3 -3
- package/src/error-tracking/parsers/gecko.ts +3 -3
- package/src/error-tracking/parsers/index.ts +3 -5
- package/src/error-tracking/parsers/node.ts +4 -4
- package/src/error-tracking/parsers/opera.ts +6 -4
- package/src/error-tracking/parsers/winjs.ts +2 -2
- package/src/error-tracking/types.ts +4 -2
- package/src/featureFlagUtils.ts +1 -1
- package/src/process/index.ts +1 -0
- package/src/process/spawn-local.ts +3 -18
- package/src/process/utils.ts +10 -3
- package/dist/error-tracking/parsers/react-native.d.ts +0 -1
- package/dist/error-tracking/parsers/react-native.d.ts.map +0 -1
- package/dist/error-tracking/parsers/react-native.js +0 -5
- package/dist/error-tracking/parsers/react-native.mjs +0 -0
- package/src/error-tracking/parsers/react-native.ts +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ErrorProperties, StackFrameModifierFn, StackParser, ErrorTrackingCoercer, EventHint
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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;
|
|
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,
|
|
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:
|
|
78
|
+
platform: platform
|
|
79
79
|
};
|
|
80
80
|
}
|
|
81
81
|
if (line.match(FILENAME_MATCH)) return {
|
|
82
82
|
filename: line,
|
|
83
|
-
platform:
|
|
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:
|
|
50
|
+
platform: platform
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
53
|
if (line.match(FILENAME_MATCH)) return {
|
|
54
54
|
filename: line,
|
|
55
|
-
platform:
|
|
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,
|
|
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:
|
|
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":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAKxC,eAAO,MAAM,cAAc,gEAAiE,CAAA;AAC5F,MAAM,CAAC,OAAO,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnE,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IAC9B,kBAAkB,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,SAAS,EAAE,CAAA;IAC5B,gBAAgB,CAAC,EAAE,aAAa,CAAA;CACjC;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;QAAC,IAAI,EAAE,KAAK,CAAA;KAAE,CAAA;CACpD;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,EAAE,CAAA;AAEvC,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,SAAS,GAAG,sBAAsB,GAAG,qBAAqB,GAAG,WAAW,GAAG,YAAY,CAAA;IAC9F,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAA;AAE9E,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,UAAU,EAAE,CAAA;AAClF,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAA;
|
|
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
|
|
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
|
*
|
package/dist/process/index.d.ts
CHANGED
|
@@ -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"}
|
package/dist/process/index.js
CHANGED
|
@@ -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 (
|
|
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
|
-
|
|
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
|
});
|
package/dist/process/index.mjs
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
export declare function spawnLocal(
|
|
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":"
|
|
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
|
-
|
|
31
|
-
|
|
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
|
|
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
|
-
|
|
3
|
-
|
|
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
|
|
6
|
+
stdio: options.stdio ?? 'inherit',
|
|
16
7
|
env: options.env,
|
|
17
8
|
cwd: options.cwd
|
|
18
9
|
});
|
package/dist/process/utils.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export declare const buildLocalBinaryPaths: (cwd: string) => string[];
|
|
2
|
-
export declare function resolveBinaryPath(
|
|
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,
|
|
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"}
|
package/dist/process/utils.js
CHANGED
|
@@ -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(
|
|
59
|
-
const envLocations =
|
|
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,
|
package/dist/process/utils.mjs
CHANGED
|
@@ -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(
|
|
19
|
-
const envLocations =
|
|
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.
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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
|
|
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:
|
|
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:
|
|
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
|
|
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:
|
|
57
|
+
platform: Platform
|
|
56
58
|
filename?: string
|
|
57
59
|
function?: string
|
|
58
60
|
module?: string
|
package/src/featureFlagUtils.ts
CHANGED
|
@@ -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
|
|
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
|
*
|
package/src/process/index.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
17
|
-
|
|
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
|
})
|
package/src/process/utils.ts
CHANGED
|
@@ -27,9 +27,16 @@ export const buildLocalBinaryPaths = (cwd: string): string[] => {
|
|
|
27
27
|
return localPaths
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
export function resolveBinaryPath(
|
|
31
|
-
|
|
32
|
-
|
|
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":""}
|
|
File without changes
|
|
File without changes
|