Home / Function/ getEvaluatorPresets() — react Function Reference

getEvaluatorPresets() — react Function Reference

Architecture documentation for the getEvaluatorPresets() function in compiler.ts from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  1364609b_5dc3_c860_738c_b048b34ae63f["getEvaluatorPresets()"]
  f294d5ab_dd3b_6bca_e120_e970909a7dc8["compiler.ts"]
  1364609b_5dc3_c860_738c_b048b34ae63f -->|defined in| f294d5ab_dd3b_6bca_e120_e970909a7dc8
  style 1364609b_5dc3_c860_738c_b048b34ae63f fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

compiler/packages/snap/src/compiler.ts lines 129–196

function getEvaluatorPresets(
  language: 'typescript' | 'flow',
): Array<BabelCore.PluginItem> {
  const presets: Array<BabelCore.PluginItem> = [
    {
      plugins: [
        'babel-plugin-fbt',
        'babel-plugin-fbt-runtime',
        'babel-plugin-idx',
      ],
    },
  ];
  presets.push(
    language === 'typescript'
      ? [
          '@babel/preset-typescript',
          {
            /**
             * onlyRemoveTypeImports needs to be set as fbt imports
             * would otherwise be removed by this pass.
             * https://github.com/facebook/fbt/issues/49
             * https://github.com/facebook/sfbt/issues/72
             * https://dev.to/retyui/how-to-add-support-typescript-for-fbt-an-internationalization-framework-3lo0
             */
            onlyRemoveTypeImports: true,
          },
        ]
      : '@babel/preset-flow',
  );

  presets.push({
    plugins: ['@babel/plugin-syntax-jsx'],
  });
  presets.push(
    ['@babel/preset-react', {throwIfNamespace: false}],
    {
      plugins: ['@babel/plugin-transform-modules-commonjs'],
    },
    {
      plugins: [
        function BabelPluginRewriteRequirePath() {
          return {
            visitor: {
              CallExpression(path: NodePath<t.CallExpression>) {
                const {callee} = path.node;
                if (callee.type === 'Identifier' && callee.name === 'require') {
                  const arg = path.node.arguments[0];
                  if (arg.type === 'StringLiteral') {
                    // rewrite to use relative import as eval happens in
                    // sprout/evaluator.ts
                    if (arg.value === 'shared-runtime') {
                      arg.value = './shared-runtime';
                    } else if (arg.value === 'ReactForgetFeatureFlag') {
                      arg.value = './ReactForgetFeatureFlag';
                    } else if (arg.value === 'useEffectWrapper') {
                      arg.value = './useEffectWrapper';
                    }
                  }
                }
              },
            },
          };
        },
      ],
    },
  );
  return presets;
}

Domain

Subdomains

Frequently Asked Questions

What does getEvaluatorPresets() do?
getEvaluatorPresets() is a function in the react codebase, defined in compiler/packages/snap/src/compiler.ts.
Where is getEvaluatorPresets() defined?
getEvaluatorPresets() is defined in compiler/packages/snap/src/compiler.ts at line 129.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free