1
1
'use strict' ;
2
2
3
+ const { declare } = require ( '@babel/helper-plugin-utils' ) ;
4
+
3
5
const defaultTargets = {
4
6
android : 62 ,
5
7
and_uc : 11 ,
@@ -13,51 +15,69 @@ const defaultTargets = {
13
15
samsung : 6 ,
14
16
} ;
15
17
16
- function buildTargets ( options ) {
17
- return Object . assign ( { } , defaultTargets , options && options . additionalTargets ) ;
18
+ function buildTargets ( { additionalTargets } ) {
19
+ return Object . assign ( { } , defaultTargets , additionalTargets ) ;
18
20
}
19
21
20
- module . exports = function babelPresetZillow ( context , options ) {
21
- const envIsDev =
22
- ( process . env . BABEL_ENV || process . env . NODE_ENV || 'development' ) === 'development' ;
23
- const targets = ( options && options . targets ) || buildTargets ( options ) ;
24
- const debug = options && typeof options . debug === 'boolean' ? ! ! options . debug : false ;
22
+ module . exports = declare ( ( api , options ) => {
23
+ // see docs about api at https://babeljs.io/docs/en/config-files#apicache
24
+ api . assertVersion ( 7 ) ;
25
+
26
+ const { modules, targets = buildTargets ( options ) , removePropTypes } = options ;
27
+
28
+ if ( typeof modules !== 'undefined' && typeof modules !== 'boolean' && modules !== 'auto' ) {
29
+ throw new TypeError (
30
+ 'babel-preset-zillow only accepts `true`, `false`, or `"auto"` as the value of the "modules" option'
31
+ ) ;
32
+ }
33
+
34
+ const debug = typeof options . debug === 'boolean' ? options . debug : false ;
35
+ const development =
36
+ typeof options . development === 'boolean'
37
+ ? options . development
38
+ : api . cache . using ( ( ) => process . env . NODE_ENV === 'development' ) ;
25
39
26
40
/* eslint global-require: off */
27
- const presets = [
28
- [
29
- require ( 'babel-preset-env' ) ,
30
- {
31
- debug,
32
- exclude : [
33
- 'transform-async-to-generator' ,
34
- 'transform-es2015-block-scoping' ,
35
- 'transform-es2015-template-literals' ,
36
- 'transform-regenerator' ,
37
- ] ,
38
- modules : false ,
39
- targets,
40
- } ,
41
+ return {
42
+ presets : [
43
+ [
44
+ require ( '@babel/preset-env' ) ,
45
+ {
46
+ debug,
47
+ exclude : [
48
+ 'transform-async-to-generator' ,
49
+ 'transform-template-literals' ,
50
+ 'transform-regenerator' ,
51
+ ] ,
52
+ modules : modules === false ? false : 'auto' ,
53
+ targets,
54
+ } ,
55
+ ] ,
56
+ [ require ( '@babel/preset-react' ) , { development } ] ,
41
57
] ,
42
- require ( 'babel-preset-react' ) ,
43
- ] ;
44
-
45
- const plugins = [
46
- options && options . modules === false
47
- ? null
48
- : [ require ( 'babel-plugin-transform-es2015-modules-commonjs' ) , { strict : false } ] ,
49
- require ( 'babel-plugin-transform-class-properties' ) ,
50
- [ require ( 'fast-async' ) , { spec : true } ] ,
51
- [ require ( 'babel-plugin-transform-es2015-block-scoping' ) , { throwIfClosureRequired : true } ] ,
52
- [ require ( 'babel-plugin-transform-es2015-template-literals' ) , { spec : true } ] ,
53
- [ require ( 'babel-plugin-transform-object-rest-spread' ) , { useBuiltIns : true } ] ,
54
- require ( 'babel-plugin-lodash' ) ,
55
- envIsDev && require ( 'babel-plugin-transform-react-jsx-source' ) ,
56
- envIsDev && require ( 'babel-plugin-transform-react-jsx-self' ) ,
57
- ] . filter ( Boolean ) ;
58
+ plugins : [
59
+ removePropTypes
60
+ ? [
61
+ require ( 'babel-plugin-transform-react-remove-prop-types' ) ,
62
+ Object . assign (
63
+ {
64
+ mode : 'wrap' ,
65
+ additionalLibraries : [ 'airbnb-prop-types' ] ,
66
+ ignoreFilenames : [ 'node_modules' ] ,
67
+ } ,
68
+ removePropTypes
69
+ ) ,
70
+ ]
71
+ : null ,
58
72
59
- return {
60
- presets,
61
- plugins,
73
+ [ require ( '@babel/plugin-transform-template-literals' ) , { loose : true } ] ,
74
+ require ( '@babel/plugin-transform-property-mutators' ) ,
75
+ require ( '@babel/plugin-transform-member-expression-literals' ) ,
76
+ require ( '@babel/plugin-transform-property-literals' ) ,
77
+ [ require ( '@babel/plugin-proposal-object-rest-spread' ) , { useBuiltIns : true } ] ,
78
+ [ require ( '@babel/plugin-proposal-class-properties' ) , { loose : true } ] ,
79
+ [ require ( 'fast-async' ) , { spec : true } ] ,
80
+ require ( 'babel-plugin-lodash' ) ,
81
+ ] . filter ( Boolean ) ,
62
82
} ;
63
- } ;
83
+ } ) ;
0 commit comments