1+ import { prepareErrorMessage } from '../../utils/prepareErrorMessage' ;
2+
13export async function collectDiagnosticsData ( error : Error ) {
2- return await Promise . all ( [ getUiVersion ( ) , getBackendVersion ( ) ] ) . then (
3- ( [ uiVersion , backendVersion ] ) => {
4- return {
5- location : window . location . href ,
6- userAgent : navigator . userAgent ,
7- error : {
8- message : prepareErrorMessage ( error ) ,
9- stack : prepareErrorStack ( error . stack , { trim : true , maxLength : 10 } ) ,
10- } ,
11- uiVersion,
12- backendVersion,
13- } ;
14- } ,
15- ) ;
4+ return await getBackendVersion ( ) . then ( ( backendVersion ) => {
5+ return {
6+ location : window . location . href ,
7+ userAgent : navigator . userAgent ,
8+ error : {
9+ message : prepareErrorMessage ( error ) ,
10+ stack : prepareErrorStack ( error . stack , { trim : true , maxLines : 10 } ) ,
11+ } ,
12+ uiVersion : process . env . UI_VERSION ,
13+ backendVersion,
14+ } ;
15+ } ) ;
1616}
1717
1818export type DiagnosticsData = Awaited < ReturnType < typeof collectDiagnosticsData > > ;
1919
20- // Error could happen on app init, while modules not inited
21- // Import in try catch blocks to prevent any errors with error data collection
22- async function getUiVersion ( ) {
23- try {
24- const packageJson = await import ( '../../../package.json' ) ;
25- return packageJson . version ;
26- } catch ( error ) {
27- return { error : prepareErrorMessage ( error ) } ;
28- }
29- }
30-
3120async function getBackendVersion ( ) {
3221 try {
3322 // node_id=. returns data about node that fullfills request
@@ -40,19 +29,9 @@ async function getBackendVersion() {
4029 }
4130}
4231
43- function prepareErrorMessage ( error : unknown ) {
44- if ( error ) {
45- if ( typeof error === 'object' && 'message' in error && typeof error . message === 'string' ) {
46- return error . message ;
47- }
48- }
49-
50- return '' ;
51- }
52-
5332export function prepareErrorStack (
5433 stack ?: string ,
55- { trim = true , maxLength } : { trim ?: boolean ; maxLength ?: number } = { } ,
34+ { trim = true , maxLines } : { trim ?: boolean ; maxLines ?: number } = { } ,
5635) {
5736 return (
5837 stack
@@ -73,7 +52,7 @@ export function prepareErrorStack(
7352 return preparedLine ;
7453 } )
7554 // Do not slice first row
76- . slice ( 0 , maxLength ? maxLength + 1 : undefined )
55+ . slice ( 0 , maxLines ? maxLines + 1 : undefined )
7756 . join ( '\n' )
7857 ) ;
7958}
0 commit comments