@@ -5,12 +5,11 @@ const escodegen = require('escodegen');
55const _ = require ( 'lodash' ) ;
66
77// declare functions to insert
8- // TODO: Un-comment timeTravelTracker
98function useReducerReplacement ( ) {
109 const dispatcher = resolveDispatcher ( ) ;
1110 function reducerWithTracker ( state , action ) {
1211 const newState = reducer ( state , action ) ;
13- // timeTravelTracker[timeTravelTracker.length - 1].actionDispatched = true;
12+ timeTravelTracker [ timeTravelTracker . length - 1 ] . actionDispatched = true ;
1413 window . postMessage ( {
1514 type : 'DISPATCH' ,
1615 data : {
@@ -22,7 +21,15 @@ function useReducerReplacement() {
2221 }
2322 return dispatcher . useReducer ( reducerWithTracker , initialArg , init ) ;
2423}
24+
2525function commitAllHostEffectsReplacement ( ) {
26+ if ( Object . keys ( funcStorage ) . length === 0 ) {
27+ funcStorage . commitDeletion = commitDeletion ;
28+ funcStorage . commitPlacement = commitPlacement ;
29+ funcStorage . commitWork = commitWork ;
30+ funcStorage . prepareUpdate = prepareUpdate ;
31+ }
32+
2633 while ( nextEffect !== null ) {
2734 {
2835 setCurrentFiber ( nextEffect ) ;
@@ -51,12 +58,9 @@ function commitAllHostEffectsReplacement() {
5158 case Placement :
5259 {
5360 // editbyme
54- window . postMessage ( {
55- type : 'EFFECT' ,
56- data : {
61+ timeTravelTracker . push ( {
5762 primaryEffectTag : 'PLACEMENT' ,
5863 effect : _ . cloneDeep ( nextEffect ) ,
59- } ,
6064 } ) ;
6165
6266 commitPlacement ( nextEffect ) ;
@@ -84,13 +88,10 @@ function commitAllHostEffectsReplacement() {
8488 case Update :
8589 {
8690 // editbyme
87- window . postMessage ( {
88- type : 'EFFECT' ,
89- data : {
90- primaryEffectTag : 'UPDATE' ,
91- effect : _ . cloneDeep ( nextEffect ) ,
92- current : _ . cloneDeep ( nextEffect . alternate ) ,
93- } ,
91+ timeTravelTracker . push ( {
92+ primaryEffectTag : 'UPDATE' ,
93+ effect : _ . cloneDeep ( nextEffect ) ,
94+ current : _ . cloneDeep ( nextEffect . alternate ) ,
9495 } ) ;
9596
9697 let _current2 = nextEffect . alternate ;
@@ -100,12 +101,9 @@ function commitAllHostEffectsReplacement() {
100101 case Deletion :
101102 {
102103 // editbyme
103- window . postMessage ( {
104- type : 'EFFECT' ,
105- data : {
106- primaryEffectTag : 'DELETION' ,
107- effect : _ . cloneDeep ( nextEffect ) ,
108- } ,
104+ timeTravelTracker . push ( {
105+ primaryEffectTag : 'DELETION' ,
106+ effect : _ . cloneDeep ( nextEffect ) ,
109107 } ) ;
110108
111109 commitDeletion ( nextEffect ) ;
@@ -122,34 +120,37 @@ function commitAllHostEffectsReplacement() {
122120
123121// traverse ast to find method and replace body with our node's body
124122function traverseTree ( replacementNode , functionName , ast ) {
123+ console . log ( 'traverse called' ) ;
125124 estraverse . replace ( ast , {
126125 enter ( node ) {
127126 if ( node . type === 'FunctionDeclaration' ) {
128127 if ( node . id . name === functionName ) {
129128 node . body = replacementNode . body [ 0 ] . body ;
129+ console . log ( 'From parser. REPLACING!' , node . id . name ) ;
130130 }
131131 }
132132 } ,
133133 } ) ;
134134}
135135
136136const parseAndGenerate = ( codeString ) => {
137- if ( codeString . search ( 'react' ) ) {
137+ if ( codeString . search ( 'react' ) !== - 1 ) {
138138 const ast = esprima . parseModule ( codeString ) ;
139+
139140 // parse react-dom code
140- if ( codeString . search ( 'react-dom' ) ) {
141- const injectableCommitAllHostEffects = esprima . parseScript ( commitAllHostEffectsReplacement . toString ( ) ) ;
142- traverseTree ( injectableCommitAllHostEffects , 'commitAllHostEffects' , ast ) ;
143- } else {
144- // parse react code
145- const injectableUseReducer = esprima . parseScript ( useReducerReplacement . toString ( ) ) ;
146- traverseTree ( injectableUseReducer , 'useReducer' , ast ) ;
147- }
141+ const injectableCommitAllHostEffects = esprima . parseScript ( commitAllHostEffectsReplacement . toString ( ) ) ;
142+ traverseTree ( injectableCommitAllHostEffects , 'commitAllHostEffects' , ast ) ;
143+
144+ // parse react code
145+ const injectableUseReducer = esprima . parseScript ( useReducerReplacement . toString ( ) ) ;
146+ traverseTree ( injectableUseReducer , 'useReducer' , ast ) ;
147+
148148 const code = escodegen . generate ( ast ) ;
149+ console . log ( 'returning code.' ) ;
149150 return code ;
150151 }
151- return - 1 ;
152+ console . log ( 'returning string.' ) ;
153+ return codeString ;
152154} ;
153155
154- // }
155156module . exports = parseAndGenerate ;
0 commit comments