@react-native/metro-babel-transformer
Advanced tools
Comparing version 0.73.7 to 0.73.8
{ | ||
"name": "@react-native/metro-babel-transformer", | ||
"version": "0.73.7", | ||
"version": "0.73.8", | ||
"description": "Babel transformer for React Native applications.", | ||
"main": "src/index.js", | ||
"exports": { | ||
".": "./src/index.js", | ||
"./package.json": "./package.json" | ||
}, | ||
"files": [ | ||
"src" | ||
], | ||
"repository": { | ||
@@ -11,10 +17,2 @@ "type": "git", | ||
}, | ||
"scripts": { | ||
"prepare-release": "test -d lib && mv src src.real && mv lib src", | ||
"cleanup-release": "test ! -e lib && mv src lib && mv src.real src && rimraf lib", | ||
"build-clean": "rimraf build && rimraf src.real", | ||
"build": " node scripts/build.js --verbose", | ||
"prepare": "yarn run build-clean && yarn run build && yarn run prepare-release", | ||
"postpublish": "yarn run cleanup-release" | ||
}, | ||
"keywords": [ | ||
@@ -33,20 +31,2 @@ "transformer", | ||
}, | ||
"devDependencies": { | ||
"@babel/plugin-proposal-class-properties": "^7.18.0", | ||
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", | ||
"@babel/plugin-proposal-object-rest-spread": "^7.20.0", | ||
"@babel/plugin-proposal-optional-chaining": "^7.20.0", | ||
"@babel/plugin-syntax-dynamic-import": "^7.8.0", | ||
"@babel/plugin-transform-async-to-generator": "^7.20.0", | ||
"@babel/plugin-transform-destructuring": "^7.20.0", | ||
"@babel/plugin-transform-flow-strip-types": "^7.20.0", | ||
"@babel/preset-env": "^7.20.0", | ||
"chalk": "^4.0.0", | ||
"glob": "^7.1.1", | ||
"invariant": "^2.2.4", | ||
"micromatch": "^4.0.4", | ||
"mkdirp": "^0.5.1", | ||
"prettier": "2.8.8", | ||
"rimraf": "^3.0.2" | ||
}, | ||
"peerDependencies": { | ||
@@ -53,0 +33,0 @@ "@babel/core": "*" |
209
src/index.js
@@ -7,3 +7,3 @@ /** | ||
* | ||
* | ||
* @flow | ||
* @format | ||
@@ -26,96 +26,4 @@ * @oncall react_native | ||
*/ | ||
const _excluded = ['projectRoot', 'extendsBabelConfigPath'], | ||
_excluded2 = ['experimentalImportSupport']; | ||
function ownKeys(object, enumerableOnly) { | ||
var keys = Object.keys(object); | ||
if (Object.getOwnPropertySymbols) { | ||
var symbols = Object.getOwnPropertySymbols(object); | ||
enumerableOnly && | ||
(symbols = symbols.filter(function (sym) { | ||
return Object.getOwnPropertyDescriptor(object, sym).enumerable; | ||
})), | ||
keys.push.apply(keys, symbols); | ||
} | ||
return keys; | ||
} | ||
function _objectSpread(target) { | ||
for (var i = 1; i < arguments.length; i++) { | ||
var source = null != arguments[i] ? arguments[i] : {}; | ||
i % 2 | ||
? ownKeys(Object(source), !0).forEach(function (key) { | ||
_defineProperty(target, key, source[key]); | ||
}) | ||
: Object.getOwnPropertyDescriptors | ||
? Object.defineProperties( | ||
target, | ||
Object.getOwnPropertyDescriptors(source), | ||
) | ||
: ownKeys(Object(source)).forEach(function (key) { | ||
Object.defineProperty( | ||
target, | ||
key, | ||
Object.getOwnPropertyDescriptor(source, key), | ||
); | ||
}); | ||
} | ||
return target; | ||
} | ||
function _defineProperty(obj, key, value) { | ||
key = _toPropertyKey(key); | ||
if (key in obj) { | ||
Object.defineProperty(obj, key, { | ||
value: value, | ||
enumerable: true, | ||
configurable: true, | ||
writable: true, | ||
}); | ||
} else { | ||
obj[key] = value; | ||
} | ||
return obj; | ||
} | ||
function _toPropertyKey(arg) { | ||
var key = _toPrimitive(arg, 'string'); | ||
return typeof key === 'symbol' ? key : String(key); | ||
} | ||
function _toPrimitive(input, hint) { | ||
if (typeof input !== 'object' || input === null) return input; | ||
var prim = input[Symbol.toPrimitive]; | ||
if (prim !== undefined) { | ||
var res = prim.call(input, hint || 'default'); | ||
if (typeof res !== 'object') return res; | ||
throw new TypeError('@@toPrimitive must return a primitive value.'); | ||
} | ||
return (hint === 'string' ? String : Number)(input); | ||
} | ||
function _objectWithoutProperties(source, excluded) { | ||
if (source == null) return {}; | ||
var target = _objectWithoutPropertiesLoose(source, excluded); | ||
var key, i; | ||
if (Object.getOwnPropertySymbols) { | ||
var sourceSymbolKeys = Object.getOwnPropertySymbols(source); | ||
for (i = 0; i < sourceSymbolKeys.length; i++) { | ||
key = sourceSymbolKeys[i]; | ||
if (excluded.indexOf(key) >= 0) continue; | ||
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; | ||
target[key] = source[key]; | ||
} | ||
} | ||
return target; | ||
} | ||
function _objectWithoutPropertiesLoose(source, excluded) { | ||
if (source == null) return {}; | ||
var target = {}; | ||
var sourceKeys = Object.keys(source); | ||
var key, i; | ||
for (i = 0; i < sourceKeys.length; i++) { | ||
key = sourceKeys[i]; | ||
if (excluded.indexOf(key) >= 0) continue; | ||
target[key] = source[key]; | ||
} | ||
return target; | ||
} | ||
const _require = require('@babel/core'), | ||
parseSync = _require.parseSync, | ||
transformFromAstSync = _require.transformFromAstSync; | ||
const {parseSync, transformFromAstSync} = require('@babel/core'); | ||
const inlineRequiresPlugin = require('babel-preset-fbjs/plugins/inline-requires'); | ||
@@ -127,2 +35,3 @@ const crypto = require('crypto'); | ||
const path = require('path'); | ||
const cacheKeyParts = [ | ||
@@ -137,2 +46,3 @@ fs.readFileSync(__filename), | ||
} | ||
function isTSXSource(fileName /*: string */) { | ||
@@ -152,9 +62,11 @@ return !!fileName && fileName.endsWith('.tsx'); | ||
* LTI update could not be added via codemod */ | ||
return function _getBabelRC(_ref) { | ||
let projectRoot = _ref.projectRoot, | ||
extendsBabelConfigPath = _ref.extendsBabelConfigPath, | ||
options = _objectWithoutProperties(_ref, _excluded); | ||
return function _getBabelRC({ | ||
projectRoot, | ||
extendsBabelConfigPath, | ||
...options | ||
}) { | ||
if (babelRC != null) { | ||
return babelRC; | ||
} | ||
babelRC = { | ||
@@ -164,2 +76,3 @@ plugins: [], | ||
}; | ||
if (extendsBabelConfigPath) { | ||
@@ -176,2 +89,3 @@ return babelRC; | ||
} | ||
if (projectBabelRCPath) { | ||
@@ -201,4 +115,3 @@ // .babelrc.js | ||
if (!babelRC.extends) { | ||
const experimentalImportSupport = options.experimentalImportSupport, | ||
presetOptions = _objectWithoutProperties(options, _excluded2); | ||
const {experimentalImportSupport, ...presetOptions} = options; | ||
@@ -209,18 +122,12 @@ // $FlowFixMe[incompatible-use] `presets` is missing in null or undefined. | ||
require('@react-native/babel-preset'), | ||
_objectSpread( | ||
_objectSpread( | ||
{ | ||
projectRoot, | ||
}, | ||
presetOptions, | ||
), | ||
{}, | ||
{ | ||
disableImportExportTransform: experimentalImportSupport, | ||
enableBabelRuntime: options.enableBabelRuntime, | ||
}, | ||
), | ||
{ | ||
projectRoot, | ||
...presetOptions, | ||
disableImportExportTransform: experimentalImportSupport, | ||
enableBabelRuntime: options.enableBabelRuntime, | ||
}, | ||
], | ||
]; | ||
} | ||
return babelRC; | ||
@@ -242,2 +149,3 @@ }; | ||
const babelRC = getBabelRC(options); | ||
const extraConfig /*: BabelCoreOptions */ = { | ||
@@ -253,12 +161,15 @@ babelrc: | ||
}; | ||
let config /*: BabelCoreOptions */ = _objectSpread( | ||
_objectSpread({}, babelRC), | ||
extraConfig, | ||
); | ||
let config /*: BabelCoreOptions */ = { | ||
...babelRC, | ||
...extraConfig, | ||
}; | ||
// Add extra plugins | ||
const extraPlugins = []; | ||
if (options.inlineRequires) { | ||
extraPlugins.push(inlineRequiresPlugin); | ||
} | ||
const withExtrPlugins = (config.plugins = extraPlugins.concat( | ||
@@ -268,2 +179,3 @@ config.plugins, | ||
)); | ||
if (options.dev && options.hot) { | ||
@@ -277,10 +189,16 @@ // Note: this intentionally doesn't include the path separator because | ||
filename.indexOf('node_modules') === -1; | ||
if (mayContainEditableReactComponents) { | ||
const hmrConfig = makeHMRConfig(); | ||
hmrConfig.plugins = withExtrPlugins.concat(hmrConfig.plugins); | ||
config = _objectSpread(_objectSpread({}, config), hmrConfig); | ||
config = {...config, ...hmrConfig}; | ||
} | ||
} | ||
return _objectSpread(_objectSpread({}, babelRC), config); | ||
return { | ||
...babelRC, | ||
...config, | ||
}; | ||
} | ||
const transform /*: BabelTransformer['transform'] */ = ({ | ||
@@ -296,26 +214,17 @@ filename, | ||
: process.env.BABEL_ENV || 'production'; | ||
try { | ||
const babelConfig = _objectSpread( | ||
_objectSpread( | ||
{ | ||
// ES modules require sourceType='module' but OSS may not always want that | ||
sourceType: 'unambiguous', | ||
}, | ||
buildBabelConfig(filename, options, plugins), | ||
), | ||
{}, | ||
{ | ||
caller: { | ||
name: 'metro', | ||
bundler: 'metro', | ||
platform: options.platform, | ||
}, | ||
ast: true, | ||
// NOTE(EvanBacon): We split the parse/transform steps up to accommodate | ||
// Hermes parsing, but this defaults to cloning the AST which increases | ||
// the transformation time by a fair amount. | ||
// You get this behavior by default when using Babel's `transform` method directly. | ||
cloneInputAst: false, | ||
}, | ||
); | ||
const babelConfig = { | ||
// ES modules require sourceType='module' but OSS may not always want that | ||
sourceType: 'unambiguous', | ||
...buildBabelConfig(filename, options, plugins), | ||
caller: {name: 'metro', bundler: 'metro', platform: options.platform}, | ||
ast: true, | ||
// NOTE(EvanBacon): We split the parse/transform steps up to accommodate | ||
// Hermes parsing, but this defaults to cloning the AST which increases | ||
// the transformation time by a fair amount. | ||
// You get this behavior by default when using Babel's `transform` method directly. | ||
cloneInputAst: false, | ||
}; | ||
const sourceAst = | ||
@@ -330,2 +239,3 @@ isTypeScriptSource(filename) || | ||
}); | ||
const result /*: TransformResult<MetroBabelFileMetadata> */ = | ||
@@ -338,10 +248,6 @@ transformFromAstSync(sourceAst, src, babelConfig); | ||
* the function returns here. Discovered when typing `BabelNode`. */ | ||
return { | ||
ast: null, | ||
}; | ||
return {ast: null}; | ||
} | ||
return { | ||
ast: nullthrows(result.ast), | ||
metadata: result.metadata, | ||
}; | ||
return {ast: nullthrows(result.ast), metadata: result.metadata}; | ||
} finally { | ||
@@ -353,2 +259,3 @@ if (OLD_BABEL_ENV) { | ||
}; | ||
function getCacheKey() { | ||
@@ -359,2 +266,3 @@ var key = crypto.createHash('md5'); | ||
} | ||
const babelTransformer /*: BabelTransformer */ = { | ||
@@ -364,2 +272,3 @@ transform, | ||
}; | ||
module.exports = babelTransformer; |
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
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
0
5
0
9544
3
267