11const gqlLoader = require ( 'graphql-tag/loader' ) ;
2-
3- let rnTransform = null ;
4-
5- try {
6- // handle RN >= 0.47
7- rnTransform = require ( 'metro-bundler/src/transformer' ) . transform ;
8- } catch ( e ) {
9- try {
10- // handle RN 0.46
11- rnTransform = require ( 'metro-bundler/build/transformer' ) . transform ;
12- } catch ( e2 ) {
13- // handle RN <= 0.45
14- const oldrnTransform = require ( 'react-native/packager/transformer' ) . transform ;
15- rnTransform = {
16- transform ( { src, filename, options } ) {
17- return oldrnTransform . transform ( src , filename , options ) ;
18- } ,
19- } ;
20- }
2+ const semver = require ( 'semver' ) ;
3+
4+ let upstreamTransformer = null ;
5+
6+ const reactNativeVersionString = require ( 'react-native/package.json' ) . version ;
7+
8+ const reactNativeMinorVersion = semver ( reactNativeVersionString ) . minor ;
9+
10+ if ( reactNativeMinorVersion >= 52 ) {
11+ upstreamTransformer = require ( 'metro/src/transformer' ) ;
12+ } else if ( reactNativeMinorVersion >= 0.47 ) {
13+ upstreamTransformer = require ( 'metro-bundler/src/transformer' ) ;
14+ } else if ( reactNativeMinorVersion === 0.46 ) {
15+ upstreamTransformer = require ( 'metro-bundler/build/transformer' ) ;
16+ } else {
17+ // handle RN <= 0.45
18+ const oldUpstreamTransformer = require ( 'react-native/packager/transformer' ) ;
19+ upstreamTransformer = {
20+ transform ( { src, filename, options } ) {
21+ return oldUpstreamTransformer . transform ( src , filename , options ) ;
22+ } ,
23+ } ;
2124}
2225
2326const gqlTransform = gqlLoader . bind ( {
@@ -36,7 +39,7 @@ function transform(src, filename, options) {
3639 result = gqlTransform ( result ) ;
3740 }
3841
39- const babelCompileResult = rnTransform ( {
42+ const babelCompileResult = upstreamTransformer ( {
4043 src : result ,
4144 filename,
4245 options,
0 commit comments