metro-react-native-babel-preset
Advanced tools
Comparing version 0.48.0 to 0.48.1
{ | ||
"name": "metro-react-native-babel-preset", | ||
"version": "0.48.0", | ||
"version": "0.48.1", | ||
"description": "Babel preset for React Native applications", | ||
@@ -54,5 +54,5 @@ "main": "src/index.js", | ||
"@babel/template": "^7.0.0", | ||
"metro-babel7-plugin-react-transform": "0.48.0", | ||
"metro-babel7-plugin-react-transform": "0.48.1", | ||
"react-transform-hmr": "^1.0.4" | ||
} | ||
} |
@@ -9,16 +9,16 @@ /** | ||
*/ | ||
'use strict'; | ||
"use strict"; | ||
var path = require('path'); | ||
var hmrTransform = 'react-transform-hmr/lib/index.js'; | ||
var path = require("path"); | ||
var hmrTransform = "react-transform-hmr/lib/index.js"; | ||
var transformPath = require.resolve(hmrTransform); | ||
module.exports = function (options, filename) { | ||
var transform = filename ? | ||
'./' + path.relative(path.dirname(filename), transformPath) // packager can't handle absolute paths | ||
: hmrTransform; | ||
module.exports = function(options, filename) { | ||
var transform = filename | ||
? "./" + path.relative(path.dirname(filename), transformPath) // packager can't handle absolute paths | ||
: hmrTransform; | ||
// Fix the module path to use '/' on Windows. | ||
if (path.sep === '\\') { | ||
transform = transform.replace(/\\/g, '/'); | ||
if (path.sep === "\\") { | ||
transform = transform.replace(/\\/g, "/"); | ||
} | ||
@@ -28,16 +28,16 @@ | ||
plugins: [ | ||
[ | ||
require('metro-babel7-plugin-react-transform'), | ||
{ | ||
transforms: [ | ||
{ | ||
transform, | ||
imports: ['react'], | ||
locals: ['module'] }] }]] }; | ||
}; | ||
[ | ||
require("metro-babel7-plugin-react-transform"), | ||
{ | ||
transforms: [ | ||
{ | ||
transform, | ||
imports: ["react"], | ||
locals: ["module"] | ||
} | ||
] | ||
} | ||
] | ||
] | ||
}; | ||
}; |
@@ -10,92 +10,115 @@ /** | ||
'use strict';var _extends = Object.assign || function (target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i];for (var key in source) {if (Object.prototype.hasOwnProperty.call(source, key)) {target[key] = source[key];}}}return target;}; | ||
"use strict"; | ||
var _extends = | ||
Object.assign || | ||
function(target) { | ||
for (var i = 1; i < arguments.length; i++) { | ||
var source = arguments[i]; | ||
for (var key in source) { | ||
if (Object.prototype.hasOwnProperty.call(source, key)) { | ||
target[key] = source[key]; | ||
} | ||
} | ||
} | ||
return target; | ||
}; | ||
function isTypeScriptSource(fileName) { | ||
return !!fileName && fileName.endsWith('.ts'); | ||
return !!fileName && fileName.endsWith(".ts"); | ||
} | ||
function isTSXSource(fileName) { | ||
return !!fileName && fileName.endsWith('.tsx'); | ||
return !!fileName && fileName.endsWith(".tsx"); | ||
} | ||
const defaultPlugins = [ | ||
[require('@babel/plugin-proposal-optional-catch-binding')], | ||
[require('@babel/plugin-transform-block-scoping')], | ||
// the flow strip types plugin must go BEFORE class properties! | ||
// there'll be a test case that fails if you don't. | ||
[require('@babel/plugin-transform-flow-strip-types')], | ||
[ | ||
require('@babel/plugin-proposal-class-properties'), | ||
// use `this.foo = bar` instead of `this.defineProperty('foo', ...)` | ||
{ loose: true }], | ||
[require("@babel/plugin-proposal-optional-catch-binding")], | ||
[require("@babel/plugin-transform-block-scoping")], | ||
// the flow strip types plugin must go BEFORE class properties! | ||
// there'll be a test case that fails if you don't. | ||
[require("@babel/plugin-transform-flow-strip-types")], | ||
[ | ||
require("@babel/plugin-proposal-class-properties"), | ||
// use `this.foo = bar` instead of `this.defineProperty('foo', ...)` | ||
{ loose: true } | ||
], | ||
[require('@babel/plugin-syntax-dynamic-import')], | ||
[require('@babel/plugin-syntax-export-default-from')], | ||
[require('@babel/plugin-transform-computed-properties')], | ||
[require('@babel/plugin-transform-destructuring')], | ||
[require('@babel/plugin-transform-function-name')], | ||
[require('@babel/plugin-transform-literals')], | ||
[require('@babel/plugin-transform-parameters')], | ||
[require('@babel/plugin-transform-shorthand-properties')], | ||
[require('@babel/plugin-transform-react-jsx')], | ||
[require('@babel/plugin-transform-regenerator')], | ||
[require('@babel/plugin-transform-sticky-regex')], | ||
[require('@babel/plugin-transform-unicode-regex')]]; | ||
[require("@babel/plugin-syntax-dynamic-import")], | ||
[require("@babel/plugin-syntax-export-default-from")], | ||
[require("@babel/plugin-transform-computed-properties")], | ||
[require("@babel/plugin-transform-destructuring")], | ||
[require("@babel/plugin-transform-function-name")], | ||
[require("@babel/plugin-transform-literals")], | ||
[require("@babel/plugin-transform-parameters")], | ||
[require("@babel/plugin-transform-shorthand-properties")], | ||
[require("@babel/plugin-transform-react-jsx")], | ||
[require("@babel/plugin-transform-regenerator")], | ||
[require("@babel/plugin-transform-sticky-regex")], | ||
[require("@babel/plugin-transform-unicode-regex")] | ||
]; | ||
const es2015ExportDefault = [ | ||
require('@babel/plugin-proposal-export-default-from')]; | ||
require("@babel/plugin-proposal-export-default-from") | ||
]; | ||
const es2015ImportExport = [ | ||
require('@babel/plugin-transform-modules-commonjs'), | ||
{ | ||
strict: false, | ||
strictMode: false, // prevent "use strict" injections | ||
allowTopLevelThis: true // dont rewrite global `this` -> `undefined` | ||
}]; | ||
require("@babel/plugin-transform-modules-commonjs"), | ||
{ | ||
strict: false, | ||
strictMode: false, // prevent "use strict" injections | ||
allowTopLevelThis: true // dont rewrite global `this` -> `undefined` | ||
} | ||
]; | ||
const es2015ArrowFunctions = [ | ||
require('@babel/plugin-transform-arrow-functions')]; | ||
require("@babel/plugin-transform-arrow-functions") | ||
]; | ||
const es2015Classes = [require('@babel/plugin-transform-classes')]; | ||
const es2015ForOf = [require('@babel/plugin-transform-for-of'), { loose: true }]; | ||
const es2015Spread = [require('@babel/plugin-transform-spread')]; | ||
const es2015Classes = [require("@babel/plugin-transform-classes")]; | ||
const es2015ForOf = [ | ||
require("@babel/plugin-transform-for-of"), | ||
{ loose: true } | ||
]; | ||
const es2015Spread = [require("@babel/plugin-transform-spread")]; | ||
const es2015TemplateLiterals = [ | ||
require('@babel/plugin-transform-template-literals'), | ||
{ loose: true }]; | ||
require("@babel/plugin-transform-template-literals"), | ||
{ loose: true } | ||
]; | ||
const exponentiationOperator = [ | ||
require('@babel/plugin-transform-exponentiation-operator')]; | ||
require("@babel/plugin-transform-exponentiation-operator") | ||
]; | ||
const objectAssign = [require('@babel/plugin-transform-object-assign')]; | ||
const objectRestSpread = [require('@babel/plugin-proposal-object-rest-spread')]; | ||
const objectAssign = [require("@babel/plugin-transform-object-assign")]; | ||
const objectRestSpread = [require("@babel/plugin-proposal-object-rest-spread")]; | ||
const nullishCoalescingOperator = [ | ||
require('@babel/plugin-proposal-nullish-coalescing-operator'), | ||
{ loose: true }]; | ||
require("@babel/plugin-proposal-nullish-coalescing-operator"), | ||
{ loose: true } | ||
]; | ||
const optionalChaining = [ | ||
require('@babel/plugin-proposal-optional-chaining'), | ||
{ loose: true }]; | ||
require("@babel/plugin-proposal-optional-chaining"), | ||
{ loose: true } | ||
]; | ||
const reactDisplayName = [ | ||
require('@babel/plugin-transform-react-display-name')]; | ||
require("@babel/plugin-transform-react-display-name") | ||
]; | ||
const reactJsxSource = [require('@babel/plugin-transform-react-jsx-source')]; | ||
const symbolMember = [require('../transforms/transform-symbol-member')]; | ||
const reactJsxSource = [require("@babel/plugin-transform-react-jsx-source")]; | ||
const symbolMember = [require("../transforms/transform-symbol-member")]; | ||
const babelRuntime = [ | ||
require('@babel/plugin-transform-runtime'), | ||
{ | ||
helpers: true, | ||
regenerator: true }]; | ||
require("@babel/plugin-transform-runtime"), | ||
{ | ||
helpers: true, | ||
regenerator: true | ||
} | ||
]; | ||
const getPreset = (src, options) => { | ||
const isNull = src == null; | ||
const hasClass = isNull || src.indexOf('class') !== -1; | ||
const hasClass = isNull || src.indexOf("class") !== -1; | ||
const hasForOf = | ||
isNull || src.indexOf('for') !== -1 && src.indexOf('of') !== -1; | ||
isNull || (src.indexOf("for") !== -1 && src.indexOf("of") !== -1); | ||
@@ -111,16 +134,16 @@ const extraPlugins = []; | ||
} | ||
if (isNull || src.indexOf('=>') !== -1) { | ||
if (isNull || src.indexOf("=>") !== -1) { | ||
extraPlugins.push(es2015ArrowFunctions); | ||
} | ||
if (isNull || hasClass || src.indexOf('...') !== -1) { | ||
if (isNull || hasClass || src.indexOf("...") !== -1) { | ||
extraPlugins.push(es2015Spread); | ||
extraPlugins.push(objectRestSpread); | ||
} | ||
if (isNull || src.indexOf('`') !== -1) { | ||
if (isNull || src.indexOf("`") !== -1) { | ||
extraPlugins.push(es2015TemplateLiterals); | ||
} | ||
if (isNull || src.indexOf('**') !== -1) { | ||
if (isNull || src.indexOf("**") !== -1) { | ||
extraPlugins.push(exponentiationOperator); | ||
} | ||
if (isNull || src.indexOf('Object.assign') !== -1) { | ||
if (isNull || src.indexOf("Object.assign") !== -1) { | ||
extraPlugins.push(objectAssign); | ||
@@ -131,16 +154,16 @@ } | ||
} | ||
if (hasForOf || src.indexOf('Symbol') !== -1) { | ||
if (hasForOf || src.indexOf("Symbol") !== -1) { | ||
extraPlugins.push(symbolMember); | ||
} | ||
if ( | ||
isNull || | ||
src.indexOf('React.createClass') !== -1 || | ||
src.indexOf('createReactClass') !== -1) | ||
{ | ||
isNull || | ||
src.indexOf("React.createClass") !== -1 || | ||
src.indexOf("createReactClass") !== -1 | ||
) { | ||
extraPlugins.push(reactDisplayName); | ||
} | ||
if (isNull || src.indexOf('?.') !== -1) { | ||
if (isNull || src.indexOf("?.") !== -1) { | ||
extraPlugins.push(optionalChaining); | ||
} | ||
if (isNull || src.indexOf('??') !== -1) { | ||
if (isNull || src.indexOf("??") !== -1) { | ||
extraPlugins.push(nullishCoalescingOperator); | ||
@@ -153,3 +176,3 @@ } | ||
if (options && options.enableBabelRuntime) { | ||
if (!options || options.enableBabelRuntime !== false) { | ||
extraPlugins.push(babelRuntime); | ||
@@ -162,22 +185,25 @@ } | ||
overrides: [ | ||
{ | ||
plugins: defaultPlugins }, | ||
{ | ||
plugins: defaultPlugins | ||
}, | ||
{ | ||
test: isTypeScriptSource, | ||
plugins: [ | ||
[require('@babel/plugin-transform-typescript'), { isTSX: false }]] }, | ||
{ | ||
test: isTypeScriptSource, | ||
plugins: [ | ||
[require("@babel/plugin-transform-typescript"), { isTSX: false }] | ||
] | ||
}, | ||
{ | ||
test: isTSXSource, | ||
plugins: [ | ||
[require("@babel/plugin-transform-typescript"), { isTSX: true }] | ||
] | ||
}, | ||
{ | ||
test: isTSXSource, | ||
plugins: [ | ||
[require('@babel/plugin-transform-typescript'), { isTSX: true }]] }, | ||
{ | ||
plugins: extraPlugins }] }; | ||
{ | ||
plugins: extraPlugins | ||
} | ||
] | ||
}; | ||
}; | ||
@@ -188,3 +214,3 @@ | ||
const env = process.env.BABEL_ENV || process.env.NODE_ENV; | ||
if (!env || env === 'development') { | ||
if (!env || env === "development") { | ||
return getPreset(null, _extends({}, options, { dev: true })); | ||
@@ -196,2 +222,2 @@ } | ||
module.exports.getPreset = getPreset; | ||
module.exports.getPreset = getPreset; |
@@ -10,10 +10,10 @@ /** | ||
'use strict'; | ||
"use strict"; | ||
const main = require('./configs/main'); | ||
const main = require("./configs/main"); | ||
module.exports = function (babel, options) { | ||
module.exports = function(babel, options) { | ||
return main(options); | ||
}; | ||
module.exports.getPreset = main.getPreset; | ||
module.exports.getPreset = main.getPreset; |
@@ -10,3 +10,3 @@ /** | ||
'use strict'; | ||
"use strict"; | ||
@@ -16,13 +16,13 @@ /*eslint consistent-return: 0*/ | ||
/** | ||
* Transforms function properties of the `Symbol` into | ||
* the presence check, and fallback string "@@<name>". | ||
* | ||
* Example: | ||
* | ||
* Symbol.iterator; | ||
* | ||
* Transformed to: | ||
* | ||
* typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'; | ||
*/ | ||
* Transforms function properties of the `Symbol` into | ||
* the presence check, and fallback string "@@<name>". | ||
* | ||
* Example: | ||
* | ||
* Symbol.iterator; | ||
* | ||
* Transformed to: | ||
* | ||
* typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'; | ||
*/ | ||
module.exports = function symbolMember(babel) { | ||
@@ -41,19 +41,20 @@ const t = babel.types; | ||
path.replaceWith( | ||
t.conditionalExpression( | ||
t.binaryExpression( | ||
'===', | ||
t.unaryExpression('typeof', t.identifier('Symbol'), true), | ||
t.stringLiteral('function')), | ||
t.conditionalExpression( | ||
t.binaryExpression( | ||
"===", | ||
t.unaryExpression("typeof", t.identifier("Symbol"), true), | ||
t.stringLiteral("function") | ||
), | ||
node, | ||
t.stringLiteral(`@@${node.property.name}`))); | ||
node, | ||
t.stringLiteral(`@@${node.property.name}`) | ||
) | ||
); | ||
// We should stop to avoid infinite recursion, since Babel | ||
// traverses replaced path, and again would hit our transform. | ||
path.stop(); | ||
} } }; | ||
} | ||
} | ||
}; | ||
}; | ||
@@ -65,7 +66,7 @@ | ||
return ( | ||
path.parentPath.type !== 'AssignmentExpression' && | ||
node.object.type === 'Identifier' && | ||
node.object.name === 'Symbol' && | ||
node.property.type === 'Identifier'); | ||
} | ||
path.parentPath.type !== "AssignmentExpression" && | ||
node.object.type === "Identifier" && | ||
node.object.name === "Symbol" && | ||
node.property.type === "Identifier" | ||
); | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
12686
298
+ Addedmetro-babel7-plugin-react-transform@0.48.1(transitive)
- Removedmetro-babel7-plugin-react-transform@0.48.0(transitive)