@react-navigation/devtools 7.0.46 → 8.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/module/index.development.js +5 -0
- package/lib/module/index.development.js.map +1 -0
- package/lib/module/index.js +4 -10
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.production.js +11 -0
- package/lib/module/index.production.js.map +1 -0
- package/lib/module/parseErrorStack.js +1 -1
- package/lib/module/parseErrorStack.js.map +1 -1
- package/lib/module/parseHermesStack.js +18 -3
- package/lib/module/parseHermesStack.js.map +1 -1
- package/lib/module/useDevToolsBase.js +1 -1
- package/lib/module/useDevToolsBase.js.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/index.development.d.ts +3 -0
- package/lib/typescript/src/index.development.d.ts.map +1 -0
- package/lib/typescript/src/index.production.d.ts +2 -0
- package/lib/typescript/src/index.production.d.ts.map +1 -0
- package/lib/typescript/src/parseErrorStack.d.ts +6 -7
- package/lib/typescript/src/parseErrorStack.d.ts.map +1 -1
- package/lib/typescript/src/parseHermesStack.d.ts +19 -13
- package/lib/typescript/src/parseHermesStack.d.ts.map +1 -1
- package/lib/typescript/src/useDevToolsBase.d.ts.map +1 -1
- package/package.json +8 -6
- package/src/index.development.tsx +2 -0
- package/src/index.production.tsx +9 -0
- package/src/index.tsx +7 -13
- package/src/parseErrorStack.tsx +15 -15
- package/src/parseHermesStack.tsx +47 -22
- package/src/useDevToolsBase.tsx +2 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useLogger","useReduxDevToolsExtension"],"sourceRoot":"../../src","sources":["index.development.tsx"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,gBAAa;AACvC,SAASC,yBAAyB,QAAQ,gCAA6B","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
useLogger = require('./useLogger').useLogger;
|
|
8
|
-
useReduxDevToolsExtension = require('./useReduxDevToolsExtension').useReduxDevToolsExtension;
|
|
9
|
-
} else {
|
|
10
|
-
useLogger = noop;
|
|
11
|
-
useReduxDevToolsExtension = noop;
|
|
12
|
-
}
|
|
3
|
+
export const {
|
|
4
|
+
useLogger,
|
|
5
|
+
useReduxDevToolsExtension
|
|
6
|
+
} = process.env.NODE_ENV !== 'production' ? require('./index.development') : require('./index.production');
|
|
13
7
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["useLogger","useReduxDevToolsExtension","process","env","NODE_ENV","require"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAO,MAAM;EACXA,SAAS;EACTC;AACoC,CAAC,GACrCC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,GACjCC,OAAO,CAAC,qBAAqB,CAAC,GAC9BA,OAAO,CAAC,oBAAoB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["noop","useLogger","useReduxDevToolsExtension"],"sourceRoot":"../../src","sources":["index.production.tsx"],"mappings":";;AAAA,MAAMA,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;AAErB,OAAO,MAAM;EACXC,SAAS;EACTC;AACoC,CAAC,GAAG;EACxCD,SAAS,EAAED,IAAI;EACfE,yBAAyB,EAAEF;AAC7B,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["stacktraceParser","parseHermesStack","convertHermesStack","stack","frames","entry","entries","type","location","functionName","push","methodName","file","sourceUrl","lineNumber","line1Based","column","column1Based","virtualOffset0Based","parseErrorStack","errorStack","parsedStack","Array","isArray","globalThis","HermesInternal","parse","map","frame"],"sourceRoot":"../../src","sources":["parseErrorStack.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,gBAAgB,MAAM,mBAAmB;AAErD,SAAiCC,gBAAgB,QAAQ,uBAAoB;AAS7E,SAASC,kBAAkBA,CAACC,KAAwB,EAAgB;EAClE,MAAMC,
|
|
1
|
+
{"version":3,"names":["stacktraceParser","parseHermesStack","convertHermesStack","stack","frames","entry","entries","type","location","functionName","push","methodName","file","sourceUrl","lineNumber","line1Based","column","column1Based","virtualOffset0Based","parseErrorStack","errorStack","parsedStack","Array","isArray","globalThis","HermesInternal","parse","map","frame"],"sourceRoot":"../../src","sources":["parseErrorStack.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,gBAAgB,MAAM,mBAAmB;AAErD,SAAiCC,gBAAgB,QAAQ,uBAAoB;AAS7E,SAASC,kBAAkBA,CAACC,KAAwB,EAAgB;EAClE,MAAMC,MAAoB,GAAG,EAAE;EAC/B,KAAK,MAAMC,KAAK,IAAIF,KAAK,CAACG,OAAO,EAAE;IACjC,IAAID,KAAK,CAACE,IAAI,KAAK,OAAO,EAAE;MAC1B;IACF;IACA,MAAM;MAAEC,QAAQ;MAAEC;IAAa,CAAC,GAAGJ,KAAK;IACxC,IAAIG,QAAQ,CAACD,IAAI,KAAK,QAAQ,IAAIC,QAAQ,CAACD,IAAI,KAAK,mBAAmB,EAAE;MACvE;IACF;IACAH,MAAM,CAACM,IAAI,CAAC;MACVC,UAAU,EAAEF,YAAY;MACxBG,IAAI,EAAEJ,QAAQ,CAACK,SAAS;MACxBC,UAAU,EAAEN,QAAQ,CAACO,UAAU;MAC/BC,MAAM,EACJR,QAAQ,CAACD,IAAI,KAAK,QAAQ,GACtBC,QAAQ,CAACS,YAAY,GAAG,CAAC,GACzBT,QAAQ,CAACU;IACjB,CAAC,CAAC;EACJ;EACA,OAAOd,MAAM;AACf;AAEA,OAAO,SAASe,eAAeA,CAACC,UAAmB,EAAgB;EACjE,IAAI,CAACA,UAAU,EAAE;IACf,OAAO,EAAE;EACX;EAEA,MAAMC,WAAW,GAAGC,KAAK,CAACC,OAAO,CAACH,UAAU,CAAC,GACzCA,UAAU,GACTI,UAAU,CAASC,cAAc,GAChCvB,kBAAkB,CAACD,gBAAgB,CAACmB,UAAU,CAAC,CAAC,GAChDpB,gBAAgB,CAAC0B,KAAK,CAACN,UAAU,CAAC,CAACO,GAAG,CACnCC,KAAK,KAAkB;IACtB,GAAGA,KAAK;IACRZ,MAAM,EAAEY,KAAK,CAACZ,MAAM,IAAI,IAAI,GAAGY,KAAK,CAACZ,MAAM,GAAG,CAAC,GAAG;EACpD,CAAC,CACH,CAAC;EAEP,OAAOK,WAAW;AACpB","ignoreList":[]}
|
|
@@ -14,11 +14,16 @@
|
|
|
14
14
|
// 4. source URL (filename)
|
|
15
15
|
// 5. line number (1 based)
|
|
16
16
|
// 6. column number (1 based) or virtual offset (0 based)
|
|
17
|
-
const RE_FRAME = /^ {
|
|
17
|
+
const RE_FRAME = /^ {4}at (.+?)(?: \((native)\)?| \((address at )?(.*?):(\d+):(\d+)\))$/;
|
|
18
18
|
|
|
19
19
|
// Capturing groups:
|
|
20
20
|
// 1. count of skipped frames
|
|
21
|
-
const RE_SKIPPED = /^ {
|
|
21
|
+
const RE_SKIPPED = /^ {4}... skipping (\d+) frames$/;
|
|
22
|
+
const RE_COMPONENT_NO_STACK = /^ {4}at .*$/;
|
|
23
|
+
function isInternalBytecodeSourceUrl(sourceUrl) {
|
|
24
|
+
// See https://github.com/facebook/hermes/blob/3332fa020cae0bab751f648db7c94e1d687eeec7/lib/VM/Runtime.cpp#L1100
|
|
25
|
+
return sourceUrl === 'InternalBytecode.js';
|
|
26
|
+
}
|
|
22
27
|
function parseLine(line) {
|
|
23
28
|
const asFrame = line.match(RE_FRAME);
|
|
24
29
|
if (asFrame) {
|
|
@@ -27,7 +32,12 @@ function parseLine(line) {
|
|
|
27
32
|
functionName: asFrame[1],
|
|
28
33
|
location: asFrame[2] === 'native' ? {
|
|
29
34
|
type: 'NATIVE'
|
|
30
|
-
} : asFrame[3] === 'address at ' ? {
|
|
35
|
+
} : asFrame[3] === 'address at ' ? isInternalBytecodeSourceUrl(asFrame[4]) ? {
|
|
36
|
+
type: 'INTERNAL_BYTECODE',
|
|
37
|
+
sourceUrl: asFrame[4],
|
|
38
|
+
line1Based: Number.parseInt(asFrame[5], 10),
|
|
39
|
+
virtualOffset0Based: Number.parseInt(asFrame[6], 10)
|
|
40
|
+
} : {
|
|
31
41
|
type: 'BYTECODE',
|
|
32
42
|
sourceUrl: asFrame[4],
|
|
33
43
|
line1Based: Number.parseInt(asFrame[5], 10),
|
|
@@ -63,6 +73,11 @@ export function parseHermesStack(stack) {
|
|
|
63
73
|
entries.push(entry);
|
|
64
74
|
continue;
|
|
65
75
|
}
|
|
76
|
+
if (RE_COMPONENT_NO_STACK.test(line)) {
|
|
77
|
+
// Skip component stacks without source location.
|
|
78
|
+
// TODO: This will not be displayed, not sure how to handle it.
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
66
81
|
// No match - we're still in the message
|
|
67
82
|
lastMessageLine = i;
|
|
68
83
|
entries = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RE_FRAME","RE_SKIPPED","parseLine","line","asFrame","match","type","functionName","location","
|
|
1
|
+
{"version":3,"names":["RE_FRAME","RE_SKIPPED","RE_COMPONENT_NO_STACK","isInternalBytecodeSourceUrl","sourceUrl","parseLine","line","asFrame","match","type","functionName","location","line1Based","Number","parseInt","virtualOffset0Based","column1Based","asSkipped","count","undefined","parseHermesStack","stack","lines","split","entries","lastMessageLine","i","length","entry","push","test","message","slice","join"],"sourceRoot":"../../src","sources":["parseHermesStack.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -33,7 +33,7 @@ export function useDevToolsBase(ref, callback) {
|
|
|
33
33
|
file,
|
|
34
34
|
lineNumber,
|
|
35
35
|
column
|
|
36
|
-
}) =>
|
|
36
|
+
}) => `at ${methodName} (${file}:${lineNumber}:${column})`).join('\n');
|
|
37
37
|
} catch (err) {
|
|
38
38
|
// Symbolication can fail with other bundles such as vite
|
|
39
39
|
// Remove entries with node_modules to reduce noise
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["deepEqual","React","parseErrorStack","useDevToolsBase","ref","callback","lastStateRef","useRef","undefined","lastActionRef","callbackRef","lastResetRef","useEffect","current","symbolicate","stack","frames","slice","filter","frame","file","urlMatch","match","url","URL","result","fetch","protocol","host","method","body","JSON","stringify","then","res","json","it","collapse","map","methodName","lineNumber","column","join","err","lines","split","line","trim","startsWith","includes","push","pendingPromiseRef","Promise","resolve","send","useCallback","data","catch","timer","unsubscribeAction","unsubscribeState","initialize","setInterval","clearTimeout","state","getRootState","type","navigation","addListener","e","action","noop","lastState","lastChange","resetRoot"],"sourceRoot":"../../src","sources":["useDevToolsBase.tsx"],"mappings":";;AAKA,OAAOA,SAAS,MAAM,iBAAiB;AACvC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,SAASC,eAAe,
|
|
1
|
+
{"version":3,"names":["deepEqual","React","parseErrorStack","useDevToolsBase","ref","callback","lastStateRef","useRef","undefined","lastActionRef","callbackRef","lastResetRef","useEffect","current","symbolicate","stack","frames","slice","filter","frame","file","urlMatch","match","url","URL","result","fetch","protocol","host","method","body","JSON","stringify","then","res","json","it","collapse","map","methodName","lineNumber","column","join","err","lines","split","line","trim","startsWith","includes","push","pendingPromiseRef","Promise","resolve","send","useCallback","data","catch","timer","unsubscribeAction","unsubscribeState","initialize","setInterval","clearTimeout","state","getRootState","type","navigation","addListener","e","action","noop","lastState","lastChange","resetRoot"],"sourceRoot":"../../src","sources":["useDevToolsBase.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
export declare let useReduxDevToolsExtension: typeof import('./useReduxDevToolsExtension').useReduxDevToolsExtension;
|
|
1
|
+
export declare const useLogger: typeof import("./useLogger").useLogger, useReduxDevToolsExtension: typeof import("./useReduxDevToolsExtension").useReduxDevToolsExtension;
|
|
3
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,eAAO,MACL,SAAS,0CACT,yBAAyB,wEAIQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.development.d.ts","sourceRoot":"","sources":["../../../src/index.development.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.production.d.ts","sourceRoot":"","sources":["../../../src/index.production.tsx"],"names":[],"mappings":"AAEA,eAAO,MACL,SAAS,0CACT,yBAAyB,wEAI1B,CAAC"}
|
|
@@ -4,12 +4,11 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
|
|
7
|
+
export type StackFrame = {
|
|
8
|
+
lineNumber: number | null;
|
|
9
|
+
column: number | null;
|
|
10
|
+
file: string | null;
|
|
8
11
|
methodName: string;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
column: number;
|
|
12
|
-
}
|
|
13
|
-
export declare function parseErrorStack(errorStack?: string | StackFrame[]): StackFrame[];
|
|
14
|
-
export {};
|
|
12
|
+
};
|
|
13
|
+
export declare function parseErrorStack(errorStack?: string): StackFrame[];
|
|
15
14
|
//# sourceMappingURL=parseErrorStack.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseErrorStack.d.ts","sourceRoot":"","sources":["../../../src/parseErrorStack.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,UAAU,
|
|
1
|
+
{"version":3,"file":"parseErrorStack.d.ts","sourceRoot":"","sources":["../../../src/parseErrorStack.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAyBF,wBAAgB,eAAe,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE,CAiBjE"}
|
|
@@ -4,36 +4,42 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
|
|
7
|
+
type HermesStackLocationNative = {
|
|
8
8
|
type: 'NATIVE';
|
|
9
|
-
}
|
|
10
|
-
|
|
9
|
+
};
|
|
10
|
+
type HermesStackLocationSource = {
|
|
11
11
|
type: 'SOURCE';
|
|
12
12
|
sourceUrl: string;
|
|
13
13
|
line1Based: number;
|
|
14
14
|
column1Based: number;
|
|
15
|
-
}
|
|
16
|
-
|
|
15
|
+
};
|
|
16
|
+
type HermesStackLocationInternalBytecode = {
|
|
17
|
+
type: 'INTERNAL_BYTECODE';
|
|
18
|
+
sourceUrl: string;
|
|
19
|
+
line1Based: number;
|
|
20
|
+
virtualOffset0Based: number;
|
|
21
|
+
};
|
|
22
|
+
type HermesStackLocationBytecode = {
|
|
17
23
|
type: 'BYTECODE';
|
|
18
24
|
sourceUrl: string;
|
|
19
25
|
line1Based: number;
|
|
20
26
|
virtualOffset0Based: number;
|
|
21
|
-
}
|
|
22
|
-
type HermesStackLocation = HermesStackLocationNative | HermesStackLocationSource | HermesStackLocationBytecode;
|
|
23
|
-
|
|
27
|
+
};
|
|
28
|
+
type HermesStackLocation = HermesStackLocationNative | HermesStackLocationSource | HermesStackLocationInternalBytecode | HermesStackLocationBytecode;
|
|
29
|
+
type HermesStackEntryFrame = {
|
|
24
30
|
type: 'FRAME';
|
|
25
31
|
location: HermesStackLocation;
|
|
26
32
|
functionName: string;
|
|
27
|
-
}
|
|
28
|
-
|
|
33
|
+
};
|
|
34
|
+
type HermesStackEntrySkipped = {
|
|
29
35
|
type: 'SKIPPED';
|
|
30
36
|
count: number;
|
|
31
|
-
}
|
|
37
|
+
};
|
|
32
38
|
type HermesStackEntry = HermesStackEntryFrame | HermesStackEntrySkipped;
|
|
33
|
-
export
|
|
39
|
+
export type HermesParsedStack = {
|
|
34
40
|
message: string;
|
|
35
41
|
entries: HermesStackEntry[];
|
|
36
|
-
}
|
|
42
|
+
};
|
|
37
43
|
export declare function parseHermesStack(stack: string): HermesParsedStack;
|
|
38
44
|
export {};
|
|
39
45
|
//# sourceMappingURL=parseHermesStack.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseHermesStack.d.ts","sourceRoot":"","sources":["../../../src/parseHermesStack.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,
|
|
1
|
+
{"version":3,"file":"parseHermesStack.d.ts","sourceRoot":"","sources":["../../../src/parseHermesStack.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,mCAAmC,GAAG;IACzC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,KAAK,2BAA2B,GAAG;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,KAAK,mBAAmB,GACpB,yBAAyB,GACzB,yBAAyB,GACzB,mCAAmC,GACnC,2BAA2B,CAAC;AAEhC,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,gBAAgB,GAAG,qBAAqB,GAAG,uBAAuB,CAAC;AAExE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B,CAAC;AA8DF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAyBjE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDevToolsBase.d.ts","sourceRoot":"","sources":["../../../src/useDevToolsBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useDevToolsBase.d.ts","sourceRoot":"","sources":["../../../src/useDevToolsBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,KAAK,QAAQ,GAAG;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;CACpC,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;IACnC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,eAAe,CAC7B,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EACxD,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,KAAK,IAAI;uBA+KvC,eAAe;EAU1B"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-navigation/devtools",
|
|
3
3
|
"description": "Developer tools for React Navigation",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "8.0.0-alpha.0",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
7
7
|
"react-native",
|
|
@@ -23,6 +23,8 @@
|
|
|
23
23
|
".": {
|
|
24
24
|
"source": "./src/index.tsx",
|
|
25
25
|
"types": "./lib/typescript/src/index.d.ts",
|
|
26
|
+
"production": "./lib/module/index.production.js",
|
|
27
|
+
"development": "./lib/module/index.development.js",
|
|
26
28
|
"default": "./lib/module/index.js"
|
|
27
29
|
},
|
|
28
30
|
"./package.json": "./package.json"
|
|
@@ -46,15 +48,15 @@
|
|
|
46
48
|
"stacktrace-parser": "^0.1.11"
|
|
47
49
|
},
|
|
48
50
|
"devDependencies": {
|
|
49
|
-
"@react-navigation/core": "^
|
|
50
|
-
"@types/react": "~19.
|
|
51
|
+
"@react-navigation/core": "^8.0.0-alpha.0",
|
|
52
|
+
"@types/react": "~19.1.10",
|
|
51
53
|
"del-cli": "^6.0.0",
|
|
52
54
|
"react": "19.1.0",
|
|
53
|
-
"react-native-builder-bob": "^0.40.
|
|
55
|
+
"react-native-builder-bob": "^0.40.12",
|
|
54
56
|
"typescript": "^5.9.2"
|
|
55
57
|
},
|
|
56
58
|
"peerDependencies": {
|
|
57
|
-
"react": ">=
|
|
59
|
+
"react": ">= 19.0.0"
|
|
58
60
|
},
|
|
59
61
|
"react-native-builder-bob": {
|
|
60
62
|
"source": "src",
|
|
@@ -74,5 +76,5 @@
|
|
|
74
76
|
]
|
|
75
77
|
]
|
|
76
78
|
},
|
|
77
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "46daae524ec6a59737147ed506222dd09a5b6e39"
|
|
78
80
|
}
|
package/src/index.tsx
CHANGED
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
useReduxDevToolsExtension =
|
|
9
|
-
require('./useReduxDevToolsExtension').useReduxDevToolsExtension;
|
|
10
|
-
} else {
|
|
11
|
-
useLogger = noop;
|
|
12
|
-
useReduxDevToolsExtension = noop;
|
|
13
|
-
}
|
|
1
|
+
export const {
|
|
2
|
+
useLogger,
|
|
3
|
+
useReduxDevToolsExtension,
|
|
4
|
+
}: typeof import('./index.development') =
|
|
5
|
+
process.env.NODE_ENV !== 'production'
|
|
6
|
+
? require('./index.development')
|
|
7
|
+
: require('./index.production');
|
package/src/parseErrorStack.tsx
CHANGED
|
@@ -9,21 +9,21 @@ import * as stacktraceParser from 'stacktrace-parser';
|
|
|
9
9
|
|
|
10
10
|
import { type HermesParsedStack, parseHermesStack } from './parseHermesStack';
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
export type StackFrame = {
|
|
13
|
+
lineNumber: number | null;
|
|
14
|
+
column: number | null;
|
|
15
|
+
file: string | null;
|
|
13
16
|
methodName: string;
|
|
14
|
-
|
|
15
|
-
lineNumber: number;
|
|
16
|
-
column: number;
|
|
17
|
-
}
|
|
17
|
+
};
|
|
18
18
|
|
|
19
19
|
function convertHermesStack(stack: HermesParsedStack): StackFrame[] {
|
|
20
|
-
const frames = [];
|
|
20
|
+
const frames: StackFrame[] = [];
|
|
21
21
|
for (const entry of stack.entries) {
|
|
22
22
|
if (entry.type !== 'FRAME') {
|
|
23
23
|
continue;
|
|
24
24
|
}
|
|
25
25
|
const { location, functionName } = entry;
|
|
26
|
-
if (location.type === 'NATIVE') {
|
|
26
|
+
if (location.type === 'NATIVE' || location.type === 'INTERNAL_BYTECODE') {
|
|
27
27
|
continue;
|
|
28
28
|
}
|
|
29
29
|
frames.push({
|
|
@@ -39,9 +39,7 @@ function convertHermesStack(stack: HermesParsedStack): StackFrame[] {
|
|
|
39
39
|
return frames;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
export function parseErrorStack(
|
|
43
|
-
errorStack?: string | StackFrame[]
|
|
44
|
-
): StackFrame[] {
|
|
42
|
+
export function parseErrorStack(errorStack?: string): StackFrame[] {
|
|
45
43
|
if (!errorStack) {
|
|
46
44
|
return [];
|
|
47
45
|
}
|
|
@@ -50,10 +48,12 @@ export function parseErrorStack(
|
|
|
50
48
|
? errorStack
|
|
51
49
|
: (globalThis as any).HermesInternal
|
|
52
50
|
? convertHermesStack(parseHermesStack(errorStack))
|
|
53
|
-
: stacktraceParser.parse(errorStack).map(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
: stacktraceParser.parse(errorStack).map(
|
|
52
|
+
(frame): StackFrame => ({
|
|
53
|
+
...frame,
|
|
54
|
+
column: frame.column != null ? frame.column - 1 : null,
|
|
55
|
+
})
|
|
56
|
+
);
|
|
57
57
|
|
|
58
|
-
return parsedStack
|
|
58
|
+
return parsedStack;
|
|
59
59
|
}
|
package/src/parseHermesStack.tsx
CHANGED
|
@@ -5,47 +5,54 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
type HermesStackLocationNative = {
|
|
9
9
|
type: 'NATIVE';
|
|
10
|
-
}
|
|
10
|
+
};
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
type HermesStackLocationSource = {
|
|
13
13
|
type: 'SOURCE';
|
|
14
14
|
sourceUrl: string;
|
|
15
15
|
line1Based: number;
|
|
16
16
|
column1Based: number;
|
|
17
|
-
}
|
|
17
|
+
};
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
type HermesStackLocationInternalBytecode = {
|
|
20
|
+
type: 'INTERNAL_BYTECODE';
|
|
21
|
+
sourceUrl: string;
|
|
22
|
+
line1Based: number;
|
|
23
|
+
virtualOffset0Based: number;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
type HermesStackLocationBytecode = {
|
|
20
27
|
type: 'BYTECODE';
|
|
21
28
|
sourceUrl: string;
|
|
22
29
|
line1Based: number;
|
|
23
30
|
virtualOffset0Based: number;
|
|
24
|
-
}
|
|
31
|
+
};
|
|
25
32
|
|
|
26
33
|
type HermesStackLocation =
|
|
27
34
|
| HermesStackLocationNative
|
|
28
35
|
| HermesStackLocationSource
|
|
36
|
+
| HermesStackLocationInternalBytecode
|
|
29
37
|
| HermesStackLocationBytecode;
|
|
30
38
|
|
|
31
|
-
|
|
39
|
+
type HermesStackEntryFrame = {
|
|
32
40
|
type: 'FRAME';
|
|
33
41
|
location: HermesStackLocation;
|
|
34
42
|
functionName: string;
|
|
35
|
-
}
|
|
43
|
+
};
|
|
36
44
|
|
|
37
|
-
|
|
45
|
+
type HermesStackEntrySkipped = {
|
|
38
46
|
type: 'SKIPPED';
|
|
39
47
|
count: number;
|
|
40
|
-
}
|
|
48
|
+
};
|
|
41
49
|
|
|
42
50
|
type HermesStackEntry = HermesStackEntryFrame | HermesStackEntrySkipped;
|
|
43
51
|
|
|
44
|
-
export
|
|
52
|
+
export type HermesParsedStack = {
|
|
45
53
|
message: string;
|
|
46
54
|
entries: HermesStackEntry[];
|
|
47
|
-
}
|
|
48
|
-
|
|
55
|
+
};
|
|
49
56
|
// Capturing groups:
|
|
50
57
|
// 1. function name
|
|
51
58
|
// 2. is this a native stack frame?
|
|
@@ -54,11 +61,17 @@ export interface HermesParsedStack {
|
|
|
54
61
|
// 5. line number (1 based)
|
|
55
62
|
// 6. column number (1 based) or virtual offset (0 based)
|
|
56
63
|
const RE_FRAME =
|
|
57
|
-
/^ {
|
|
64
|
+
/^ {4}at (.+?)(?: \((native)\)?| \((address at )?(.*?):(\d+):(\d+)\))$/;
|
|
58
65
|
|
|
59
66
|
// Capturing groups:
|
|
60
67
|
// 1. count of skipped frames
|
|
61
|
-
const RE_SKIPPED = /^ {
|
|
68
|
+
const RE_SKIPPED = /^ {4}... skipping (\d+) frames$/;
|
|
69
|
+
const RE_COMPONENT_NO_STACK = /^ {4}at .*$/;
|
|
70
|
+
|
|
71
|
+
function isInternalBytecodeSourceUrl(sourceUrl: string): boolean {
|
|
72
|
+
// See https://github.com/facebook/hermes/blob/3332fa020cae0bab751f648db7c94e1d687eeec7/lib/VM/Runtime.cpp#L1100
|
|
73
|
+
return sourceUrl === 'InternalBytecode.js';
|
|
74
|
+
}
|
|
62
75
|
|
|
63
76
|
function parseLine(line: string): HermesStackEntry | undefined {
|
|
64
77
|
const asFrame = line.match(RE_FRAME);
|
|
@@ -70,12 +83,19 @@ function parseLine(line: string): HermesStackEntry | undefined {
|
|
|
70
83
|
asFrame[2] === 'native'
|
|
71
84
|
? { type: 'NATIVE' }
|
|
72
85
|
: asFrame[3] === 'address at '
|
|
73
|
-
?
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
86
|
+
? isInternalBytecodeSourceUrl(asFrame[4])
|
|
87
|
+
? {
|
|
88
|
+
type: 'INTERNAL_BYTECODE',
|
|
89
|
+
sourceUrl: asFrame[4],
|
|
90
|
+
line1Based: Number.parseInt(asFrame[5], 10),
|
|
91
|
+
virtualOffset0Based: Number.parseInt(asFrame[6], 10),
|
|
92
|
+
}
|
|
93
|
+
: {
|
|
94
|
+
type: 'BYTECODE',
|
|
95
|
+
sourceUrl: asFrame[4],
|
|
96
|
+
line1Based: Number.parseInt(asFrame[5], 10),
|
|
97
|
+
virtualOffset0Based: Number.parseInt(asFrame[6], 10),
|
|
98
|
+
}
|
|
79
99
|
: {
|
|
80
100
|
type: 'SOURCE',
|
|
81
101
|
sourceUrl: asFrame[4],
|
|
@@ -96,7 +116,7 @@ function parseLine(line: string): HermesStackEntry | undefined {
|
|
|
96
116
|
|
|
97
117
|
export function parseHermesStack(stack: string): HermesParsedStack {
|
|
98
118
|
const lines = stack.split(/\n/);
|
|
99
|
-
let entries = [];
|
|
119
|
+
let entries: (HermesStackEntryFrame | HermesStackEntrySkipped)[] = [];
|
|
100
120
|
let lastMessageLine = -1;
|
|
101
121
|
for (let i = 0; i < lines.length; ++i) {
|
|
102
122
|
const line = lines[i];
|
|
@@ -108,6 +128,11 @@ export function parseHermesStack(stack: string): HermesParsedStack {
|
|
|
108
128
|
entries.push(entry);
|
|
109
129
|
continue;
|
|
110
130
|
}
|
|
131
|
+
if (RE_COMPONENT_NO_STACK.test(line)) {
|
|
132
|
+
// Skip component stacks without source location.
|
|
133
|
+
// TODO: This will not be displayed, not sure how to handle it.
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
111
136
|
// No match - we're still in the message
|
|
112
137
|
lastMessageLine = i;
|
|
113
138
|
entries = [];
|
package/src/useDevToolsBase.tsx
CHANGED
|
@@ -6,14 +6,7 @@ import type {
|
|
|
6
6
|
import deepEqual from 'fast-deep-equal';
|
|
7
7
|
import * as React from 'react';
|
|
8
8
|
|
|
9
|
-
import { parseErrorStack } from './parseErrorStack';
|
|
10
|
-
|
|
11
|
-
type StackFrame = {
|
|
12
|
-
lineNumber: number | null;
|
|
13
|
-
column: number | null;
|
|
14
|
-
file: string | null;
|
|
15
|
-
methodName: string;
|
|
16
|
-
};
|
|
9
|
+
import { parseErrorStack, type StackFrame } from './parseErrorStack';
|
|
17
10
|
|
|
18
11
|
type StackFrameResult = StackFrame & {
|
|
19
12
|
collapse: boolean;
|
|
@@ -79,7 +72,7 @@ export function useDevToolsBase(
|
|
|
79
72
|
.filter((it) => !it.collapse)
|
|
80
73
|
.map(
|
|
81
74
|
({ methodName, file, lineNumber, column }) =>
|
|
82
|
-
|
|
75
|
+
`at ${methodName} (${file}:${lineNumber}:${column})`
|
|
83
76
|
)
|
|
84
77
|
.join('\n');
|
|
85
78
|
} catch (err) {
|