|
12 | 12 |
|
13 | 13 | 'use strict';
|
14 | 14 |
|
15 |
| -const babelRegisterOnly = require('metro-babel-register'); |
16 |
| -const createCacheKeyFunction = |
17 |
| - require('@jest/create-cache-key-function').default; |
18 |
| - |
19 |
| -const {transformSync: babelTransformSync} = require('@babel/core'); |
20 |
| -const generate = require('@babel/generator').default; |
21 |
| - |
22 |
| -const nodeFiles = new RegExp( |
23 |
| - [ |
24 |
| - '/metro(?:-[^/]*)?/', // metro, metro-core, metro-source-map, metro-etc. |
25 |
| - ].join('|'), |
| 15 | +// NOTE: Avoiding using a package like 'chalk' here, for simplicity |
| 16 | +const YELLOW = process.stderr.isTTY ? '\u001b[33m' : ''; |
| 17 | +const BOLD = process.stderr.isTTY ? '\u001b[1m' : ''; |
| 18 | +const RESET = process.stderr.isTTY ? '\u001b[0m' : ''; |
| 19 | +const UNDERLINE = process.stderr.isTTY ? '\u001b[4m' : ''; |
| 20 | + |
| 21 | +console.warn( |
| 22 | + '\n' + |
| 23 | + YELLOW + |
| 24 | + BOLD + |
| 25 | + 'react-native/jest/preprocessor.js' + |
| 26 | + RESET + |
| 27 | + YELLOW + |
| 28 | + ' is deprecated and will be removed.\n' + |
| 29 | + 'Use "preset": "react-native" in your Jest config instead.\n' + |
| 30 | + 'See ' + |
| 31 | + UNDERLINE + |
| 32 | + 'https://jestjs.io/docs/tutorial-react-native' + |
| 33 | + RESET + |
| 34 | + YELLOW + |
| 35 | + ' for more setup instructions.' + |
| 36 | + RESET + |
| 37 | + '\n', |
26 | 38 | );
|
27 |
| -const nodeOptions = babelRegisterOnly.config([nodeFiles]); |
28 |
| - |
29 |
| -babelRegisterOnly([]); |
30 |
| - |
31 |
| -const transformer = require('metro-react-native-babel-transformer'); |
32 |
| -module.exports = { |
33 |
| - process(src /*: string */, file /*: string */) /*: string */ { |
34 |
| - if (nodeFiles.test(file)) { |
35 |
| - // node specific transforms only |
36 |
| - return babelTransformSync(src, { |
37 |
| - filename: file, |
38 |
| - sourceType: 'script', |
39 |
| - ...nodeOptions, |
40 |
| - ast: false, |
41 |
| - }).code; |
42 |
| - } |
43 |
| - |
44 |
| - const {ast} = transformer.transform({ |
45 |
| - filename: file, |
46 |
| - options: { |
47 |
| - ast: true, // needed for open source (?) https://github.com/facebook/react-native/commit/f8d6b97140cffe8d18b2558f94570c8d1b410d5c#r28647044 |
48 |
| - dev: true, |
49 |
| - enableBabelRuntime: false, |
50 |
| - experimentalImportSupport: false, |
51 |
| - globalPrefix: '', |
52 |
| - hot: false, |
53 |
| - inlineRequires: true, |
54 |
| - minify: false, |
55 |
| - platform: '', |
56 |
| - projectRoot: '', |
57 |
| - publicPath: '/assets', |
58 |
| - retainLines: true, |
59 |
| - sourceType: 'unambiguous', // b7 required. detects module vs script mode |
60 |
| - }, |
61 |
| - src, |
62 |
| - plugins: [ |
63 |
| - [require('@babel/plugin-transform-block-scoping')], |
64 |
| - // the flow strip types plugin must go BEFORE class properties! |
65 |
| - // there'll be a test case that fails if you don't. |
66 |
| - [require('@babel/plugin-transform-flow-strip-types')], |
67 |
| - [ |
68 |
| - require('@babel/plugin-proposal-class-properties'), |
69 |
| - // use `this.foo = bar` instead of `this.defineProperty('foo', ...)` |
70 |
| - {loose: true}, |
71 |
| - ], |
72 |
| - [require('@babel/plugin-transform-computed-properties')], |
73 |
| - [require('@babel/plugin-transform-destructuring')], |
74 |
| - [require('@babel/plugin-transform-function-name')], |
75 |
| - [require('@babel/plugin-transform-literals')], |
76 |
| - [require('@babel/plugin-transform-parameters')], |
77 |
| - [require('@babel/plugin-transform-shorthand-properties')], |
78 |
| - [require('@babel/plugin-transform-react-jsx')], |
79 |
| - [require('@babel/plugin-transform-regenerator')], |
80 |
| - [require('@babel/plugin-transform-sticky-regex')], |
81 |
| - [require('@babel/plugin-transform-unicode-regex')], |
82 |
| - [ |
83 |
| - require('@babel/plugin-transform-modules-commonjs'), |
84 |
| - {strict: false, allowTopLevelThis: true}, |
85 |
| - ], |
86 |
| - [require('@babel/plugin-transform-classes')], |
87 |
| - [require('@babel/plugin-transform-arrow-functions')], |
88 |
| - [require('@babel/plugin-transform-spread')], |
89 |
| - [require('@babel/plugin-proposal-object-rest-spread')], |
90 |
| - [ |
91 |
| - require('@babel/plugin-transform-template-literals'), |
92 |
| - {loose: true}, // dont 'a'.concat('b'), just use 'a'+'b' |
93 |
| - ], |
94 |
| - [require('@babel/plugin-transform-exponentiation-operator')], |
95 |
| - [require('@babel/plugin-transform-for-of'), {loose: true}], |
96 |
| - [require('@babel/plugin-transform-react-display-name')], |
97 |
| - [require('@babel/plugin-transform-react-jsx-source')], |
98 |
| - ], |
99 |
| - }); |
100 |
| - |
101 |
| - return generate( |
102 |
| - ast, |
103 |
| - // $FlowFixMe[prop-missing] Error found when improving flow typing for libs |
104 |
| - { |
105 |
| - code: true, |
106 |
| - comments: false, |
107 |
| - compact: false, |
108 |
| - filename: file, |
109 |
| - retainLines: true, |
110 |
| - sourceFileName: file, |
111 |
| - sourceMaps: true, |
112 |
| - }, |
113 |
| - src, |
114 |
| - ).code; |
115 |
| - }, |
116 | 39 |
|
117 |
| - getCacheKey: (createCacheKeyFunction([ |
118 |
| - __filename, |
119 |
| - require.resolve('metro-react-native-babel-transformer'), |
120 |
| - require.resolve('@babel/core/package.json'), |
121 |
| - ]) /*: any */), |
122 |
| -}; |
| 40 | +module.exports = require('./preprocessor_DO_NOT_USE'); |
0 commit comments