Socket
Socket
Sign inDemoInstall

@react-native/metro-babel-transformer

Package Overview
Dependencies
Maintainers
10
Versions
389
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@react-native/metro-babel-transformer - npm Package Compare versions

Comparing version 0.73.7 to 0.73.8

src/__tests__/transform-test.js

36

package.json
{
"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": "*"

@@ -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;
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc