@@ -4,18 +4,26 @@ import {
44 parseNode , parseEdge , parseDetails , parseActionHistory ,
55} from './parseProperties' ;
66
7- const parser = ( graphMlCnt ) => new Promise ( ( resolve ) => {
7+ const parser = ( graphMlCnt ) => new Promise ( ( resolve , reject ) => {
88 new xml2js . Parser ( ) . parseString ( graphMlCnt , ( err , grahMLObj ) => {
9- const grahML = new PropFromArr ( grahMLObj ) ;
10- const nodes = grahML . parseProps ( 'graphml.graph.node' , 1 ) . map ( parseNode ) ;
11- const edges = grahML . parseProps ( 'graphml.graph.edge' , 1 ) . map ( parseEdge ) ;
12- const {
13- id, projectName, serverID, authorName,
14- } = parseDetails ( grahML ) ;
15- const actionHistory = parseActionHistory ( grahML ) ;
16- resolve ( {
17- id, projectName, edges, nodes, actionHistory, serverID, authorName,
18- } ) ;
9+ if ( err || ! grahMLObj ) {
10+ reject ( err || new Error ( 'Invalid GraphML file.' ) ) ;
11+ return ;
12+ }
13+ try {
14+ const grahML = new PropFromArr ( grahMLObj ) ;
15+ const nodes = grahML . parseProps ( 'graphml.graph.node' , 1 ) . map ( parseNode ) ;
16+ const edges = grahML . parseProps ( 'graphml.graph.edge' , 1 ) . map ( parseEdge ) ;
17+ const {
18+ id, projectName, serverID, authorName,
19+ } = parseDetails ( grahML ) ;
20+ const actionHistory = parseActionHistory ( grahML ) ;
21+ resolve ( {
22+ id, projectName, edges, nodes, actionHistory, serverID, authorName,
23+ } ) ;
24+ } catch {
25+ reject ( new Error ( 'Invalid GraphML file.' ) ) ;
26+ }
1927 } ) ;
2028} ) ;
2129export default parser ;
0 commit comments