@react-navigation/devtools 6.0.13 → 6.0.15
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/commonjs/index.js +0 -3
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/parseErrorStack.js +3 -15
- package/lib/commonjs/parseErrorStack.js.map +1 -1
- package/lib/commonjs/parseHermesStack.js +6 -17
- package/lib/commonjs/parseHermesStack.js.map +1 -1
- package/lib/commonjs/useDevToolsBase.js +8 -26
- package/lib/commonjs/useDevToolsBase.js.map +1 -1
- package/lib/commonjs/useFlipper.js +7 -29
- package/lib/commonjs/useFlipper.js.map +1 -1
- package/lib/commonjs/useReduxDevToolsExtension.js +0 -12
- package/lib/commonjs/useReduxDevToolsExtension.js.map +1 -1
- package/lib/module/index.js +0 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/parseErrorStack.js +3 -10
- package/lib/module/parseErrorStack.js.map +1 -1
- package/lib/module/parseHermesStack.js +6 -16
- package/lib/module/parseHermesStack.js.map +1 -1
- package/lib/module/useDevToolsBase.js +8 -19
- package/lib/module/useDevToolsBase.js.map +1 -1
- package/lib/module/useFlipper.js +7 -22
- package/lib/module/useFlipper.js.map +1 -1
- package/lib/module/useReduxDevToolsExtension.js +0 -6
- package/lib/module/useReduxDevToolsExtension.js.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/parseErrorStack.d.ts +1 -0
- package/lib/typescript/src/parseErrorStack.d.ts.map +1 -0
- package/lib/typescript/src/parseHermesStack.d.ts +1 -0
- package/lib/typescript/src/parseHermesStack.d.ts.map +1 -0
- package/lib/typescript/src/useDevToolsBase.d.ts +1 -0
- package/lib/typescript/src/useDevToolsBase.d.ts.map +1 -0
- package/lib/typescript/src/useFlipper.d.ts +1 -0
- package/lib/typescript/src/useFlipper.d.ts.map +1 -0
- package/lib/typescript/src/useReduxDevToolsExtension.d.ts +1 -0
- package/lib/typescript/src/useReduxDevToolsExtension.d.ts.map +1 -0
- package/package.json +4 -4
|
@@ -4,26 +4,22 @@
|
|
|
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
8
|
import * as stacktraceParser from 'stacktrace-parser';
|
|
8
9
|
import parseHermesStack from './parseHermesStack';
|
|
9
|
-
|
|
10
10
|
function convertHermesStack(stack) {
|
|
11
11
|
const frames = [];
|
|
12
|
-
|
|
13
12
|
for (const entry of stack.entries) {
|
|
14
13
|
if (entry.type !== 'FRAME') {
|
|
15
14
|
continue;
|
|
16
15
|
}
|
|
17
|
-
|
|
18
16
|
const {
|
|
19
17
|
location,
|
|
20
18
|
functionName
|
|
21
19
|
} = entry;
|
|
22
|
-
|
|
23
20
|
if (location.type === 'NATIVE') {
|
|
24
21
|
continue;
|
|
25
22
|
}
|
|
26
|
-
|
|
27
23
|
frames.push({
|
|
28
24
|
methodName: functionName,
|
|
29
25
|
file: location.sourceUrl,
|
|
@@ -31,20 +27,17 @@ function convertHermesStack(stack) {
|
|
|
31
27
|
column: location.type === 'SOURCE' ? location.column1Based - 1 : location.virtualOffset0Based
|
|
32
28
|
});
|
|
33
29
|
}
|
|
34
|
-
|
|
35
30
|
return frames;
|
|
36
31
|
}
|
|
37
|
-
|
|
38
32
|
function parseErrorStack(errorStack) {
|
|
39
33
|
if (!errorStack) {
|
|
40
34
|
return [];
|
|
41
35
|
}
|
|
42
|
-
|
|
43
|
-
|
|
36
|
+
const parsedStack = Array.isArray(errorStack) ? errorStack : global.HermesInternal ? convertHermesStack(parseHermesStack(errorStack)) : stacktraceParser.parse(errorStack).map(frame => ({
|
|
37
|
+
...frame,
|
|
44
38
|
column: frame.column != null ? frame.column - 1 : null
|
|
45
39
|
}));
|
|
46
40
|
return parsedStack;
|
|
47
41
|
}
|
|
48
|
-
|
|
49
42
|
export default parseErrorStack;
|
|
50
43
|
//# sourceMappingURL=parseErrorStack.js.map
|
|
@@ -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","global","HermesInternal","parse","map","frame"],"
|
|
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","global","HermesInternal","parse","map","frame"],"sourceRoot":"../../src","sources":["parseErrorStack.tsx"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,gBAAgB,MAAM,mBAAmB;AAErD,OAAOC,gBAAgB,MAA6B,oBAAoB;AASxE,SAASC,kBAAkB,CAACC,KAAwB,EAAgB;EAClE,MAAMC,MAAM,GAAG,EAAE;EACjB,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,EAAE;MAC9B;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,SAASe,eAAe,CAACC,UAAkC,EAAgB;EACzE,IAAI,CAACA,UAAU,EAAE;IACf,OAAO,EAAE;EACX;EAEA,MAAMC,WAAW,GAAGC,KAAK,CAACC,OAAO,CAACH,UAAU,CAAC,GACzCA,UAAU,GACTI,MAAM,CAASC,cAAc,GAC9BvB,kBAAkB,CAACD,gBAAgB,CAACmB,UAAU,CAAC,CAAC,GAChDpB,gBAAgB,CAAC0B,KAAK,CAACN,UAAU,CAAC,CAACO,GAAG,CAAEC,KAAK,KAAM;IACjD,GAAGA,KAAK;IACRZ,MAAM,EAAEY,KAAK,CAACZ,MAAM,IAAI,IAAI,GAAGY,KAAK,CAACZ,MAAM,GAAG,CAAC,GAAG;EACpD,CAAC,CAAC,CAAC;EAEP,OAAOK,WAAW;AACpB;AAEA,eAAeF,eAAe"}
|
|
@@ -4,6 +4,7 @@
|
|
|
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
8
|
// Capturing groups:
|
|
8
9
|
// 1. function name
|
|
9
10
|
// 2. is this a native stack frame?
|
|
@@ -11,14 +12,13 @@
|
|
|
11
12
|
// 4. source URL (filename)
|
|
12
13
|
// 5. line number (1 based)
|
|
13
14
|
// 6. column number (1 based) or virtual offset (0 based)
|
|
14
|
-
const RE_FRAME = /^ {0,4}at (.+?)(?: \((native)\)?| \((address at )?(.*?):(\d+):(\d+)\))$/;
|
|
15
|
-
// 1. count of skipped frames
|
|
15
|
+
const RE_FRAME = /^ {0,4}at (.+?)(?: \((native)\)?| \((address at )?(.*?):(\d+):(\d+)\))$/;
|
|
16
16
|
|
|
17
|
+
// Capturing groups:
|
|
18
|
+
// 1. count of skipped frames
|
|
17
19
|
const RE_SKIPPED = /^ {0,4}... skipping (\d) frames$/;
|
|
18
|
-
|
|
19
20
|
function parseLine(line) {
|
|
20
21
|
const asFrame = line.match(RE_FRAME);
|
|
21
|
-
|
|
22
22
|
if (asFrame) {
|
|
23
23
|
return {
|
|
24
24
|
type: 'FRAME',
|
|
@@ -38,43 +38,33 @@ function parseLine(line) {
|
|
|
38
38
|
}
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
|
-
|
|
42
41
|
const asSkipped = line.match(RE_SKIPPED);
|
|
43
|
-
|
|
44
42
|
if (asSkipped) {
|
|
45
43
|
return {
|
|
46
44
|
type: 'SKIPPED',
|
|
47
45
|
count: Number.parseInt(asSkipped[1], 10)
|
|
48
46
|
};
|
|
49
47
|
}
|
|
50
|
-
|
|
51
48
|
return undefined;
|
|
52
49
|
}
|
|
53
|
-
|
|
54
50
|
export default function parseHermesStack(stack) {
|
|
55
51
|
const lines = stack.split(/\n/);
|
|
56
52
|
let entries = [];
|
|
57
53
|
let lastMessageLine = -1;
|
|
58
|
-
|
|
59
54
|
for (let i = 0; i < lines.length; ++i) {
|
|
60
55
|
const line = lines[i];
|
|
61
|
-
|
|
62
56
|
if (!line) {
|
|
63
57
|
continue;
|
|
64
58
|
}
|
|
65
|
-
|
|
66
59
|
const entry = parseLine(line);
|
|
67
|
-
|
|
68
60
|
if (entry) {
|
|
69
61
|
entries.push(entry);
|
|
70
62
|
continue;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
63
|
+
}
|
|
64
|
+
// No match - we're still in the message
|
|
74
65
|
lastMessageLine = i;
|
|
75
66
|
entries = [];
|
|
76
67
|
}
|
|
77
|
-
|
|
78
68
|
const message = lines.slice(0, lastMessageLine + 1).join('\n');
|
|
79
69
|
return {
|
|
80
70
|
message,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RE_FRAME","RE_SKIPPED","parseLine","line","asFrame","match","type","functionName","location","sourceUrl","line1Based","Number","parseInt","virtualOffset0Based","column1Based","asSkipped","count","undefined","parseHermesStack","stack","lines","split","entries","lastMessageLine","i","length","entry","push","message","slice","join"],"
|
|
1
|
+
{"version":3,"names":["RE_FRAME","RE_SKIPPED","parseLine","line","asFrame","match","type","functionName","location","sourceUrl","line1Based","Number","parseInt","virtualOffset0Based","column1Based","asSkipped","count","undefined","parseHermesStack","stack","lines","split","entries","lastMessageLine","i","length","entry","push","message","slice","join"],"sourceRoot":"../../src","sources":["parseHermesStack.tsx"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;;AA2CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,QAAQ,GACZ,yEAAyE;;AAE3E;AACA;AACA,MAAMC,UAAU,GAAG,kCAAkC;AAErD,SAASC,SAAS,CAACC,IAAY,EAAgC;EAC7D,MAAMC,OAAO,GAAGD,IAAI,CAACE,KAAK,CAACL,QAAQ,CAAC;EACpC,IAAII,OAAO,EAAE;IACX,OAAO;MACLE,IAAI,EAAE,OAAO;MACbC,YAAY,EAAEH,OAAO,CAAC,CAAC,CAAC;MACxBI,QAAQ,EACNJ,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,GACnB;QAAEE,IAAI,EAAE;MAAS,CAAC,GAClBF,OAAO,CAAC,CAAC,CAAC,KAAK,aAAa,GAC5B;QACEE,IAAI,EAAE,UAAU;QAChBG,SAAS,EAAEL,OAAO,CAAC,CAAC,CAAC;QACrBM,UAAU,EAAEC,MAAM,CAACC,QAAQ,CAACR,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3CS,mBAAmB,EAAEF,MAAM,CAACC,QAAQ,CAACR,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;MACrD,CAAC,GACD;QACEE,IAAI,EAAE,QAAQ;QACdG,SAAS,EAAEL,OAAO,CAAC,CAAC,CAAC;QACrBM,UAAU,EAAEC,MAAM,CAACC,QAAQ,CAACR,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3CU,YAAY,EAAEH,MAAM,CAACC,QAAQ,CAACR,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;MAC9C;IACR,CAAC;EACH;EACA,MAAMW,SAAS,GAAGZ,IAAI,CAACE,KAAK,CAACJ,UAAU,CAAC;EACxC,IAAIc,SAAS,EAAE;IACb,OAAO;MACLT,IAAI,EAAE,SAAS;MACfU,KAAK,EAAEL,MAAM,CAACC,QAAQ,CAACG,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;IACzC,CAAC;EACH;EACA,OAAOE,SAAS;AAClB;AAEA,eAAe,SAASC,gBAAgB,CAACC,KAAa,EAAqB;EACzE,MAAMC,KAAK,GAAGD,KAAK,CAACE,KAAK,CAAC,IAAI,CAAC;EAC/B,IAAIC,OAAO,GAAG,EAAE;EAChB,IAAIC,eAAe,GAAG,CAAC,CAAC;EACxB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,KAAK,CAACK,MAAM,EAAE,EAAED,CAAC,EAAE;IACrC,MAAMrB,IAAI,GAAGiB,KAAK,CAACI,CAAC,CAAC;IACrB,IAAI,CAACrB,IAAI,EAAE;MACT;IACF;IACA,MAAMuB,KAAK,GAAGxB,SAAS,CAACC,IAAI,CAAC;IAC7B,IAAIuB,KAAK,EAAE;MACTJ,OAAO,CAACK,IAAI,CAACD,KAAK,CAAC;MACnB;IACF;IACA;IACAH,eAAe,GAAGC,CAAC;IACnBF,OAAO,GAAG,EAAE;EACd;EACA,MAAMM,OAAO,GAAGR,KAAK,CAACS,KAAK,CAAC,CAAC,EAAEN,eAAe,GAAG,CAAC,CAAC,CAACO,IAAI,CAAC,IAAI,CAAC;EAC9D,OAAO;IAAEF,OAAO;IAAEN;EAAQ,CAAC;AAC7B"}
|
|
@@ -9,21 +9,16 @@ export default function useDevToolsBase(ref, callback) {
|
|
|
9
9
|
React.useEffect(() => {
|
|
10
10
|
callbackRef.current = callback;
|
|
11
11
|
});
|
|
12
|
-
|
|
13
12
|
const symbolicate = async stack => {
|
|
14
13
|
var _frames$, _frames$$file;
|
|
15
|
-
|
|
16
14
|
if (stack == null) {
|
|
17
15
|
return undefined;
|
|
18
16
|
}
|
|
19
|
-
|
|
20
17
|
const frames = parseErrorStack(stack).slice(2).filter(frame => frame.file !== '[native code]');
|
|
21
18
|
const urlMatch = (_frames$ = frames[0]) === null || _frames$ === void 0 ? void 0 : (_frames$$file = _frames$.file) === null || _frames$$file === void 0 ? void 0 : _frames$$file.match(/^https?:\/\/.+(:\d+)?\//);
|
|
22
|
-
|
|
23
19
|
if (!urlMatch) {
|
|
24
20
|
return stack;
|
|
25
21
|
}
|
|
26
|
-
|
|
27
22
|
try {
|
|
28
23
|
const result = await fetch(`${urlMatch[0]}symbolicate`, {
|
|
29
24
|
method: 'POST',
|
|
@@ -44,22 +39,22 @@ export default function useDevToolsBase(ref, callback) {
|
|
|
44
39
|
return stack;
|
|
45
40
|
}
|
|
46
41
|
};
|
|
47
|
-
|
|
48
42
|
const pendingPromiseRef = React.useRef(Promise.resolve());
|
|
49
43
|
const send = React.useCallback(data => {
|
|
50
44
|
// We need to make sure that our callbacks executed in the same order
|
|
51
45
|
// So we add check if the last promise is settled before sending the next one
|
|
52
|
-
pendingPromiseRef.current = pendingPromiseRef.current.catch(() => {
|
|
46
|
+
pendingPromiseRef.current = pendingPromiseRef.current.catch(() => {
|
|
47
|
+
// Ignore any errors from the last promise
|
|
53
48
|
}).then(async () => {
|
|
54
49
|
if (data.stack) {
|
|
55
50
|
let stack;
|
|
56
|
-
|
|
57
51
|
try {
|
|
58
52
|
stack = await symbolicate(data.stack);
|
|
59
|
-
} catch (err) {
|
|
53
|
+
} catch (err) {
|
|
54
|
+
// Ignore errors from symbolicate
|
|
60
55
|
}
|
|
61
|
-
|
|
62
|
-
|
|
56
|
+
callbackRef.current({
|
|
57
|
+
...data,
|
|
63
58
|
stack
|
|
64
59
|
});
|
|
65
60
|
} else {
|
|
@@ -71,7 +66,6 @@ export default function useDevToolsBase(ref, callback) {
|
|
|
71
66
|
let timer;
|
|
72
67
|
let unsubscribeAction;
|
|
73
68
|
let unsubscribeState;
|
|
74
|
-
|
|
75
69
|
const initialize = async () => {
|
|
76
70
|
if (!ref.current) {
|
|
77
71
|
// If the navigation object isn't ready yet, wait for it
|
|
@@ -90,11 +84,9 @@ export default function useDevToolsBase(ref, callback) {
|
|
|
90
84
|
}, 100);
|
|
91
85
|
});
|
|
92
86
|
}
|
|
93
|
-
|
|
94
87
|
const navigation = ref.current;
|
|
95
88
|
unsubscribeAction = navigation.addListener('__unsafe_action__', e => {
|
|
96
89
|
const action = e.data.action;
|
|
97
|
-
|
|
98
90
|
if (e.data.noop) {
|
|
99
91
|
// Even if the state didn't change, it's useful to show the action
|
|
100
92
|
send({
|
|
@@ -113,17 +105,16 @@ export default function useDevToolsBase(ref, callback) {
|
|
|
113
105
|
lastStateRef.current = undefined;
|
|
114
106
|
return;
|
|
115
107
|
}
|
|
116
|
-
|
|
117
108
|
const state = navigation.getRootState();
|
|
118
109
|
const lastState = lastStateRef.current;
|
|
119
110
|
const lastChange = lastActionRef.current;
|
|
120
111
|
lastActionRef.current = undefined;
|
|
121
|
-
lastStateRef.current = state;
|
|
112
|
+
lastStateRef.current = state;
|
|
122
113
|
|
|
114
|
+
// If we don't have an action and the state didn't change, then it's probably extraneous
|
|
123
115
|
if (lastChange === undefined && deepEqual(state, lastState)) {
|
|
124
116
|
return;
|
|
125
117
|
}
|
|
126
|
-
|
|
127
118
|
send({
|
|
128
119
|
type: 'action',
|
|
129
120
|
action: lastChange ? lastChange.action : {
|
|
@@ -134,11 +125,9 @@ export default function useDevToolsBase(ref, callback) {
|
|
|
134
125
|
});
|
|
135
126
|
});
|
|
136
127
|
};
|
|
137
|
-
|
|
138
128
|
initialize();
|
|
139
129
|
return () => {
|
|
140
130
|
var _unsubscribeAction, _unsubscribeState;
|
|
141
|
-
|
|
142
131
|
(_unsubscribeAction = unsubscribeAction) === null || _unsubscribeAction === void 0 ? void 0 : _unsubscribeAction();
|
|
143
132
|
(_unsubscribeState = unsubscribeState) === null || _unsubscribeState === void 0 ? void 0 : _unsubscribeState();
|
|
144
133
|
clearTimeout(timer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["deepEqual","React","parseErrorStack","useDevToolsBase","ref","callback","lastStateRef","useRef","lastActionRef","callbackRef","lastResetRef","undefined","useEffect","current","symbolicate","stack","frames","slice","filter","frame","file","urlMatch","match","result","fetch","method","body","JSON","stringify","then","res","json","it","collapse","map","methodName","lineNumber","column","join","err","pendingPromiseRef","Promise","resolve","send","useCallback","data","catch","timer","unsubscribeAction","unsubscribeState","initialize","setInterval","clearTimeout","state","getRootState","type","navigation","addListener","e","action","noop","lastState","lastChange","resetRoot"],"sources":["useDevToolsBase.tsx"],"sourcesContent":["import type {\n NavigationAction,\n NavigationContainerRef,\n NavigationState,\n} from '@react-navigation/core';\nimport deepEqual from 'deep-equal';\nimport * as React from 'react';\n\nimport parseErrorStack from './parseErrorStack';\n\ntype StackFrame = {\n lineNumber: number | null;\n column: number | null;\n file: string | null;\n methodName: string;\n};\n\ntype StackFrameResult = StackFrame & {\n collapse: boolean;\n};\n\ntype StackResult = {\n stack: StackFrameResult[];\n};\n\ntype InitData = {\n type: 'init';\n state: NavigationState | undefined;\n};\n\ntype ActionData = {\n type: 'action';\n action: NavigationAction;\n state: NavigationState | undefined;\n stack: string | undefined;\n};\n\nexport default function useDevToolsBase(\n ref: React.RefObject<NavigationContainerRef<any>>,\n callback: (result: InitData | ActionData) => void\n) {\n const lastStateRef = React.useRef<NavigationState | undefined>();\n const lastActionRef = React.useRef<\n { action: NavigationAction; stack: string | undefined } | undefined\n >();\n const callbackRef = React.useRef(callback);\n const lastResetRef = React.useRef<NavigationState | undefined>(undefined);\n\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n\n const symbolicate = async (stack: string | undefined) => {\n if (stack == null) {\n return undefined;\n }\n\n const frames = parseErrorStack(stack)\n .slice(2)\n .filter((frame) => frame.file !== '[native code]');\n\n const urlMatch = frames[0]?.file?.match(/^https?:\\/\\/.+(:\\d+)?\\//);\n\n if (!urlMatch) {\n return stack;\n }\n\n try {\n const result: StackResult = await fetch(`${urlMatch[0]}symbolicate`, {\n method: 'POST',\n body: JSON.stringify({ stack: frames }),\n }).then((res) => res.json());\n\n return result.stack\n .filter((it) => !it.collapse)\n .map(\n ({ methodName, file, lineNumber, column }) =>\n `${methodName}@${file}:${lineNumber}:${column}`\n )\n .join('\\n');\n } catch (err) {\n return stack;\n }\n };\n\n const pendingPromiseRef = React.useRef<Promise<void>>(Promise.resolve());\n\n const send = React.useCallback((data: ActionData) => {\n // We need to make sure that our callbacks executed in the same order\n // So we add check if the last promise is settled before sending the next one\n pendingPromiseRef.current = pendingPromiseRef.current\n .catch(() => {\n // Ignore any errors from the last promise\n })\n .then(async () => {\n if (data.stack) {\n let stack: string | undefined;\n\n try {\n stack = await symbolicate(data.stack);\n } catch (err) {\n // Ignore errors from symbolicate\n }\n\n callbackRef.current({ ...data, stack });\n } else {\n callbackRef.current(data);\n }\n });\n }, []);\n\n React.useEffect(() => {\n let timer: any;\n let unsubscribeAction: (() => void) | undefined;\n let unsubscribeState: (() => void) | undefined;\n\n const initialize = async () => {\n if (!ref.current) {\n // If the navigation object isn't ready yet, wait for it\n await new Promise<void>((resolve) => {\n timer = setInterval(() => {\n if (ref.current) {\n resolve();\n clearTimeout(timer);\n const state = ref.current.getRootState();\n\n lastStateRef.current = state;\n callbackRef.current({ type: 'init', state });\n }\n }, 100);\n });\n }\n\n const navigation = ref.current!;\n\n unsubscribeAction = navigation.addListener('__unsafe_action__', (e) => {\n const action = e.data.action;\n\n if (e.data.noop) {\n // Even if the state didn't change, it's useful to show the action\n send({\n type: 'action',\n action,\n state: lastStateRef.current,\n stack: e.data.stack,\n });\n } else {\n lastActionRef.current = e.data;\n }\n });\n\n unsubscribeState = navigation.addListener('state', (e) => {\n // Don't show the action in dev tools if the state is what we sent to reset earlier\n if (\n lastResetRef.current &&\n deepEqual(lastResetRef.current, e.data.state)\n ) {\n lastStateRef.current = undefined;\n return;\n }\n\n const state = navigation.getRootState();\n const lastState = lastStateRef.current;\n const lastChange = lastActionRef.current;\n\n lastActionRef.current = undefined;\n lastStateRef.current = state;\n\n // If we don't have an action and the state didn't change, then it's probably extraneous\n if (lastChange === undefined && deepEqual(state, lastState)) {\n return;\n }\n\n send({\n type: 'action',\n action: lastChange ? lastChange.action : { type: '@@UNKNOWN' },\n state,\n stack: lastChange?.stack,\n });\n });\n };\n\n initialize();\n\n return () => {\n unsubscribeAction?.();\n unsubscribeState?.();\n clearTimeout(timer);\n };\n }, [ref, send]);\n\n const resetRoot = React.useCallback(\n (state: NavigationState) => {\n if (ref.current) {\n lastResetRef.current = state;\n ref.current.resetRoot(state);\n }\n },\n [ref]\n );\n\n return { resetRoot };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["deepEqual","React","parseErrorStack","useDevToolsBase","ref","callback","lastStateRef","useRef","lastActionRef","callbackRef","lastResetRef","undefined","useEffect","current","symbolicate","stack","frames","slice","filter","frame","file","urlMatch","match","result","fetch","method","body","JSON","stringify","then","res","json","it","collapse","map","methodName","lineNumber","column","join","err","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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"}
|
package/lib/module/useFlipper.js
CHANGED
|
@@ -2,17 +2,15 @@ import { nanoid } from 'nanoid/non-secure';
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import useDevToolsBase from './useDevToolsBase';
|
|
4
4
|
let FlipperModule;
|
|
5
|
-
|
|
6
5
|
try {
|
|
7
6
|
FlipperModule = require('react-native-flipper');
|
|
8
|
-
} catch (e) {
|
|
7
|
+
} catch (e) {
|
|
8
|
+
// Do nothing
|
|
9
9
|
}
|
|
10
|
-
|
|
11
10
|
export default function useFlipper(ref) {
|
|
12
11
|
if (FlipperModule == null) {
|
|
13
12
|
throw new Error("Please install the 'react-native-flipper' package in your project to use Flipper integration for React Navigation.");
|
|
14
13
|
}
|
|
15
|
-
|
|
16
14
|
const {
|
|
17
15
|
addPlugin
|
|
18
16
|
} = FlipperModule;
|
|
@@ -21,11 +19,9 @@ export default function useFlipper(ref) {
|
|
|
21
19
|
resetRoot
|
|
22
20
|
} = useDevToolsBase(ref, result => {
|
|
23
21
|
const connection = connectionRef.current;
|
|
24
|
-
|
|
25
22
|
if (!connection) {
|
|
26
23
|
return;
|
|
27
24
|
}
|
|
28
|
-
|
|
29
25
|
switch (result.type) {
|
|
30
26
|
case 'init':
|
|
31
27
|
connection.send('init', {
|
|
@@ -33,7 +29,6 @@ export default function useFlipper(ref) {
|
|
|
33
29
|
state: result.state
|
|
34
30
|
});
|
|
35
31
|
break;
|
|
36
|
-
|
|
37
32
|
case 'action':
|
|
38
33
|
connection.send('action', {
|
|
39
34
|
id: nanoid(),
|
|
@@ -49,34 +44,29 @@ export default function useFlipper(ref) {
|
|
|
49
44
|
getId() {
|
|
50
45
|
return 'react-navigation';
|
|
51
46
|
},
|
|
52
|
-
|
|
53
47
|
async onConnect(connection) {
|
|
54
48
|
connectionRef.current = connection;
|
|
55
|
-
|
|
56
49
|
const on = (event, listener) => {
|
|
57
50
|
connection.receive(event, (params, responder) => {
|
|
58
51
|
try {
|
|
59
|
-
const result = listener(params);
|
|
52
|
+
const result = listener(params);
|
|
60
53
|
|
|
61
|
-
|
|
54
|
+
// Return null instead of undefined, otherwise flipper doesn't respond
|
|
55
|
+
responder.success(result ?? null);
|
|
62
56
|
} catch (e) {
|
|
63
57
|
responder.error(e);
|
|
64
58
|
}
|
|
65
59
|
});
|
|
66
60
|
};
|
|
67
|
-
|
|
68
61
|
on('navigation.invoke', _ref => {
|
|
69
62
|
var _ref$current;
|
|
70
|
-
|
|
71
63
|
let {
|
|
72
64
|
method,
|
|
73
65
|
args = []
|
|
74
66
|
} = _ref;
|
|
75
|
-
|
|
76
67
|
switch (method) {
|
|
77
68
|
case 'resetRoot':
|
|
78
69
|
return resetRoot(args[0]);
|
|
79
|
-
|
|
80
70
|
default:
|
|
81
71
|
// @ts-expect-error: we want to call arbitrary methods here
|
|
82
72
|
return (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current[method](...args);
|
|
@@ -84,35 +74,30 @@ export default function useFlipper(ref) {
|
|
|
84
74
|
});
|
|
85
75
|
on('linking.invoke', _ref2 => {
|
|
86
76
|
var _global$REACT_NAVIGAT, _global$REACT_NAVIGAT2, _args$;
|
|
87
|
-
|
|
88
77
|
let {
|
|
89
78
|
method,
|
|
90
79
|
args = []
|
|
91
80
|
} = _ref2;
|
|
92
81
|
const linking = ref.current ? // @ts-ignore: this might not exist
|
|
93
82
|
(_global$REACT_NAVIGAT = global.REACT_NAVIGATION_DEVTOOLS) === null || _global$REACT_NAVIGAT === void 0 ? void 0 : (_global$REACT_NAVIGAT2 = _global$REACT_NAVIGAT.get(ref.current)) === null || _global$REACT_NAVIGAT2 === void 0 ? void 0 : _global$REACT_NAVIGAT2.linking : null;
|
|
94
|
-
|
|
95
83
|
switch (method) {
|
|
96
84
|
case 'getStateFromPath':
|
|
97
85
|
case 'getPathFromState':
|
|
98
86
|
case 'getActionFromState':
|
|
99
|
-
return linking === null || linking === void 0 ? void 0 : linking[method](args[0], (_args$ = args[1]) !== null && _args$ !== void 0 && _args$.trim() ?
|
|
87
|
+
return linking === null || linking === void 0 ? void 0 : linking[method](args[0], (_args$ = args[1]) !== null && _args$ !== void 0 && _args$.trim() ?
|
|
88
|
+
// eslint-disable-next-line no-eval
|
|
100
89
|
eval(`(function() { return ${args[1]}; }())`) : linking.config);
|
|
101
|
-
|
|
102
90
|
default:
|
|
103
91
|
return linking === null || linking === void 0 ? void 0 : linking[method](...args);
|
|
104
92
|
}
|
|
105
93
|
});
|
|
106
94
|
},
|
|
107
|
-
|
|
108
95
|
onDisconnect() {
|
|
109
96
|
connectionRef.current = undefined;
|
|
110
97
|
},
|
|
111
|
-
|
|
112
98
|
runInBackground() {
|
|
113
99
|
return false;
|
|
114
100
|
}
|
|
115
|
-
|
|
116
101
|
});
|
|
117
102
|
}, [addPlugin, ref, resetRoot]);
|
|
118
103
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["nanoid","React","useDevToolsBase","FlipperModule","require","e","useFlipper","ref","Error","addPlugin","connectionRef","useRef","resetRoot","result","connection","current","type","send","id","state","action","stack","useEffect","getId","onConnect","on","event","listener","receive","params","responder","success","error","method","args","linking","global","REACT_NAVIGATION_DEVTOOLS","get","trim","eval","config","onDisconnect","undefined","runInBackground"],"
|
|
1
|
+
{"version":3,"names":["nanoid","React","useDevToolsBase","FlipperModule","require","e","useFlipper","ref","Error","addPlugin","connectionRef","useRef","resetRoot","result","connection","current","type","send","id","state","action","stack","useEffect","getId","onConnect","on","event","listener","receive","params","responder","success","error","method","args","linking","global","REACT_NAVIGATION_DEVTOOLS","get","trim","eval","config","onDisconnect","undefined","runInBackground"],"sourceRoot":"../../src","sources":["useFlipper.tsx"],"mappings":"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"}
|
|
@@ -2,27 +2,22 @@ import * as React from 'react';
|
|
|
2
2
|
import useDevToolsBase from './useDevToolsBase';
|
|
3
3
|
export default function useReduxDevToolsExtension(ref) {
|
|
4
4
|
const devToolsRef = React.useRef();
|
|
5
|
-
|
|
6
5
|
if (devToolsRef.current === undefined && typeof __REDUX_DEVTOOLS_EXTENSION__ !== 'undefined') {
|
|
7
6
|
devToolsRef.current = __REDUX_DEVTOOLS_EXTENSION__.connect({
|
|
8
7
|
name: '@react-navigation/devtools'
|
|
9
8
|
});
|
|
10
9
|
}
|
|
11
|
-
|
|
12
10
|
const {
|
|
13
11
|
resetRoot
|
|
14
12
|
} = useDevToolsBase(ref, result => {
|
|
15
13
|
const devTools = devToolsRef.current;
|
|
16
|
-
|
|
17
14
|
if (!devTools) {
|
|
18
15
|
return;
|
|
19
16
|
}
|
|
20
|
-
|
|
21
17
|
switch (result.type) {
|
|
22
18
|
case 'init':
|
|
23
19
|
devTools.init(result.state);
|
|
24
20
|
break;
|
|
25
|
-
|
|
26
21
|
case 'action':
|
|
27
22
|
devTools.send(result.action, result.state);
|
|
28
23
|
break;
|
|
@@ -30,7 +25,6 @@ export default function useReduxDevToolsExtension(ref) {
|
|
|
30
25
|
});
|
|
31
26
|
React.useEffect(() => {
|
|
32
27
|
var _devToolsRef$current;
|
|
33
|
-
|
|
34
28
|
return (_devToolsRef$current = devToolsRef.current) === null || _devToolsRef$current === void 0 ? void 0 : _devToolsRef$current.subscribe(message => {
|
|
35
29
|
if (message.type === 'DISPATCH' && message.state) {
|
|
36
30
|
const state = JSON.parse(message.state);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useDevToolsBase","useReduxDevToolsExtension","ref","devToolsRef","useRef","current","undefined","__REDUX_DEVTOOLS_EXTENSION__","connect","name","resetRoot","result","devTools","type","init","state","send","action","useEffect","subscribe","message","JSON","parse"],"
|
|
1
|
+
{"version":3,"names":["React","useDevToolsBase","useReduxDevToolsExtension","ref","devToolsRef","useRef","current","undefined","__REDUX_DEVTOOLS_EXTENSION__","connect","name","resetRoot","result","devTools","type","init","state","send","action","useEffect","subscribe","message","JSON","parse"],"sourceRoot":"../../src","sources":["useReduxDevToolsExtension.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,eAAe,MAAM,mBAAmB;AAiB/C,eAAe,SAASC,yBAAyB,CAC/CC,GAAiD,EACjD;EACA,MAAMC,WAAW,GAAGJ,KAAK,CAACK,MAAM,EAAsB;EAEtD,IACED,WAAW,CAACE,OAAO,KAAKC,SAAS,IACjC,OAAOC,4BAA4B,KAAK,WAAW,EACnD;IACAJ,WAAW,CAACE,OAAO,GAAGE,4BAA4B,CAACC,OAAO,CAAC;MACzDC,IAAI,EAAE;IACR,CAAC,CAAC;EACJ;EAEA,MAAM;IAAEC;EAAU,CAAC,GAAGV,eAAe,CAACE,GAAG,EAAGS,MAAM,IAAK;IACrD,MAAMC,QAAQ,GAAGT,WAAW,CAACE,OAAO;IAEpC,IAAI,CAACO,QAAQ,EAAE;MACb;IACF;IAEA,QAAQD,MAAM,CAACE,IAAI;MACjB,KAAK,MAAM;QACTD,QAAQ,CAACE,IAAI,CAACH,MAAM,CAACI,KAAK,CAAC;QAC3B;MACF,KAAK,QAAQ;QACXH,QAAQ,CAACI,IAAI,CAACL,MAAM,CAACM,MAAM,EAAEN,MAAM,CAACI,KAAK,CAAC;QAC1C;IAAM;EAEZ,CAAC,CAAC;EAEFhB,KAAK,CAACmB,SAAS,CACb;IAAA;IAAA,+BACEf,WAAW,CAACE,OAAO,yDAAnB,qBAAqBc,SAAS,CAAEC,OAAO,IAAK;MAC1C,IAAIA,OAAO,CAACP,IAAI,KAAK,UAAU,IAAIO,OAAO,CAACL,KAAK,EAAE;QAChD,MAAMA,KAAK,GAAGM,IAAI,CAACC,KAAK,CAACF,OAAO,CAACL,KAAK,CAAC;QAEvCL,SAAS,CAACK,KAAK,CAAC;MAClB;IACF,CAAC,CAAC;EAAA,GACJ,CAACL,SAAS,CAAC,CACZ;AACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAEA,eAAO,IAAI,yBAAyB,EAAE,cAAc,6BAA6B,EAAE,OAAO,CAAC;AAC3F,eAAO,IAAI,UAAU,EAAE,cAAc,cAAc,EAAE,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseErrorStack.d.ts","sourceRoot":"","sources":["../../../src/parseErrorStack.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAyBD,iBAAS,eAAe,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,UAAU,EAAE,CAezE;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseHermesStack.d.ts","sourceRoot":"","sources":["../../../src/parseHermesStack.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,UAAU,yBAAyB;IACjC,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,UAAU,yBAAyB;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,2BAA2B;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,aAAK,mBAAmB,GACpB,yBAAyB,GACzB,yBAAyB,GACzB,2BAA2B,CAAC;AAEhC,UAAU,qBAAqB;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,uBAAuB;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,aAAK,gBAAgB,GAAG,qBAAqB,GAAG,uBAAuB,CAAC;AAExE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAkDD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAoBzE"}
|
|
@@ -0,0 +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;AAmB/B,aAAK,QAAQ,GAAG;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;CACpC,CAAC;AAEF,aAAK,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,MAAM,CAAC,OAAO,UAAU,eAAe,CACrC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,EACjD,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,KAAK,IAAI;uBAyJvC,eAAe;EAU1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFlipper.d.ts","sourceRoot":"","sources":["../../../src/useFlipper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAErE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,MAAM,CAAC,OAAO,UAAU,UAAU,CAChC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,QAkGlD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReduxDevToolsExtension.d.ts","sourceRoot":"","sources":["../../../src/useReduxDevToolsExtension.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAmB/B,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,QAyClD"}
|
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": "6.0.
|
|
4
|
+
"version": "6.0.15",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
7
7
|
"react-native",
|
|
@@ -41,13 +41,13 @@
|
|
|
41
41
|
"stacktrace-parser": "^0.1.10"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@react-navigation/core": "^6.4.
|
|
44
|
+
"@react-navigation/core": "^6.4.5",
|
|
45
45
|
"@testing-library/react-native": "^11.5.0",
|
|
46
46
|
"@types/deep-equal": "^1.0.1",
|
|
47
47
|
"@types/react": "~18.0.0",
|
|
48
48
|
"del-cli": "^3.0.1",
|
|
49
49
|
"react": "18.0.0",
|
|
50
|
-
"react-native-builder-bob": "^0.
|
|
50
|
+
"react-native-builder-bob": "^0.20.3",
|
|
51
51
|
"react-native-flipper": "~0.125.0",
|
|
52
52
|
"typescript": "^4.7.4"
|
|
53
53
|
},
|
|
@@ -68,5 +68,5 @@
|
|
|
68
68
|
]
|
|
69
69
|
]
|
|
70
70
|
},
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "2b22d3ea9ca99bc298f4fb48ae9808b65aa25620"
|
|
72
72
|
}
|