/** * 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, Identifier} from '@babel/types'; import {NodePath} from '@babel/traverse'; import { tryReplaceFlipperRequire, tryReplaceGlobalReactUsage, } from './replace-flipper-requires'; import {resolve} from 'path'; const sourceRootDir = resolve(__dirname, '..', '..'); function isExcludedPath(path: string) { // We shouldn't apply transformations for the plugins which are part of the repository // as they are bundled with Flipper app and all use the single "react" dependency. // But we should apply it for the plugins outside of Flipper folder, so they can be loaded // in dev mode and use "react" from Flipper bundle. return path.startsWith(sourceRootDir); } module.exports = () => ({ visitor: { CallExpression(path: NodePath, state: any) { if (isExcludedPath(state.file.opts.filename)) { return; } tryReplaceFlipperRequire(path); }, Identifier(path: NodePath, state: any) { if (isExcludedPath(state.file.opts.filename)) { return; } tryReplaceGlobalReactUsage(path); }, }, });