rename babel-transformer files from ts to tsx

Summary: group files rename

Reviewed By: passy

Differential Revision: D33889860

fbshipit-source-id: 888e173fc72b5e126c1e41324b6cae6be29274c5
This commit is contained in:
Anton Kastritskiy
2022-01-31 06:13:30 -08:00
committed by Facebook GitHub Bot
parent 69bac4a3d6
commit 844728d9dc
22 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
import {
CallExpression,
isStringLiteral,
identifier,
Identifier,
} from '@babel/types';
import {NodePath} from '@babel/traverse';
// This list should match `dispatcher/plugins.tsx` and `builtInModules` in `desktop/.eslintrc.js`
const requireReplacements: any = {
flipper: 'global.Flipper',
'flipper-plugin': 'global.FlipperPlugin',
react: 'global.React',
'react-dom': 'global.ReactDOM',
antd: 'global.antd',
immer: 'global.Immer',
'@emotion/styled': 'global.emotion_styled',
'@ant-design/icons': 'global.antdesign_icons',
};
export function tryReplaceFlipperRequire(path: NodePath<CallExpression>) {
const node = path.node;
const args = node.arguments || [];
if (
node.callee.type === 'Identifier' &&
node.callee.name === 'require' &&
args.length === 1 &&
isStringLiteral(args[0])
) {
const replacement = requireReplacements[args[0].value];
if (replacement) {
path.replaceWith(identifier(replacement));
return true;
}
}
return false;
}
export function tryReplaceGlobalReactUsage(path: NodePath<Identifier>) {
if (
path.node.name === 'React' &&
(path.parentPath.node as any).id !== path.node &&
!isReactImportIdentifier(path)
) {
path.replaceWith(identifier('global.React'));
return true;
}
return false;
}
function isReactImportIdentifier(path: NodePath<Identifier>) {
return (
path.parentPath.node.type === 'ImportNamespaceSpecifier' &&
path.parentPath.node.local.name === 'React'
);
}