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:
committed by
Facebook GitHub Bot
parent
69bac4a3d6
commit
844728d9dc
65
desktop/babel-transformer/src/replace-flipper-requires.tsx
Normal file
65
desktop/babel-transformer/src/replace-flipper-requires.tsx
Normal 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'
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user