Home / File/ ReactCompilerRule.ts — react Source File

ReactCompilerRule.ts — react Source File

Architecture documentation for ReactCompilerRule.ts, a typescript file in the react codebase. 5 imports, 8 dependents.

File typescript BabelCompiler Validation 5 imports 8 dependents 9 functions

Entity Profile

Dependency Diagram

graph LR
  cc8eb92a_b0c5_c461_8a5e_7435585bbc6e["ReactCompilerRule.ts"]
  93161a4a_8836_f386_2264_41352eee2303["RunReactCompiler.ts"]
  cc8eb92a_b0c5_c461_8a5e_7435585bbc6e --> 93161a4a_8836_f386_2264_41352eee2303
  52e3d8d7_abf4_7343_1f98_3f701ec04082["types"]
  cc8eb92a_b0c5_c461_8a5e_7435585bbc6e --> 52e3d8d7_abf4_7343_1f98_3f701ec04082
  6532b592_e173_3956_4bd1_d55d91adeefe["src"]
  cc8eb92a_b0c5_c461_8a5e_7435585bbc6e --> 6532b592_e173_3956_4bd1_d55d91adeefe
  e023ae51_0bf7_c8b1_0545_8e7304e4bb72["eslint"]
  cc8eb92a_b0c5_c461_8a5e_7435585bbc6e --> e023ae51_0bf7_c8b1_0545_8e7304e4bb72
  f1417319_0940_9839_f3b2_304147ce4f9d["CompilerError"]
  cc8eb92a_b0c5_c461_8a5e_7435585bbc6e --> f1417319_0940_9839_f3b2_304147ce4f9d
  fe900090_ffb7_69bc_e43c_31d1506aebdf["ImpureFunctionCallsRule-test.ts"]
  fe900090_ffb7_69bc_e43c_31d1506aebdf --> cc8eb92a_b0c5_c461_8a5e_7435585bbc6e
  7b06326c_10b5_45ec_3ebb_f8b909c17ef4["InvalidHooksRule-test.ts"]
  7b06326c_10b5_45ec_3ebb_f8b909c17ef4 --> cc8eb92a_b0c5_c461_8a5e_7435585bbc6e
  bef2af1f_8aae_95c1_7312_e60ab412c9ae["NoAmbiguousJsxRule-test.ts"]
  bef2af1f_8aae_95c1_7312_e60ab412c9ae --> cc8eb92a_b0c5_c461_8a5e_7435585bbc6e
  7f76a9cf_909b_bef1_2557_38a00b1190af["NoCapitalizedCallsRule-test.ts"]
  7f76a9cf_909b_bef1_2557_38a00b1190af --> cc8eb92a_b0c5_c461_8a5e_7435585bbc6e
  08707db7_da45_6476_8614_d872c7abc3f1["NoRefAccessInRender-tests.ts"]
  08707db7_da45_6476_8614_d872c7abc3f1 --> cc8eb92a_b0c5_c461_8a5e_7435585bbc6e
  a4e0a434_c5ac_2a3c_80f4_783788be4192["PluginTest-test.ts"]
  a4e0a434_c5ac_2a3c_80f4_783788be4192 --> cc8eb92a_b0c5_c461_8a5e_7435585bbc6e
  799656f0_feaf_2c82_77fc_4a08283ea146["shared-utils.ts"]
  799656f0_feaf_2c82_77fc_4a08283ea146 --> cc8eb92a_b0c5_c461_8a5e_7435585bbc6e
  09f2574e_a7bc_f280_9531_89cfe9b31a61["index.ts"]
  09f2574e_a7bc_f280_9531_89cfe9b31a61 --> cc8eb92a_b0c5_c461_8a5e_7435585bbc6e
  style cc8eb92a_b0c5_c461_8a5e_7435585bbc6e fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/**
 * 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.
 */

import type {SourceLocation as BabelSourceLocation} from '@babel/types';
import {
  CompilerDiagnosticOptions,
  CompilerErrorDetailOptions,
  CompilerSuggestionOperation,
} from 'babel-plugin-react-compiler/src';
import type {Linter, Rule} from 'eslint';
import runReactCompiler, {RunCacheEntry} from '../shared/RunReactCompiler';
import {
  ErrorSeverity,
  LintRulePreset,
  LintRules,
  type LintRule,
} from 'babel-plugin-react-compiler/src/CompilerError';

function assertExhaustive(_: never, errorMsg: string): never {
  throw new Error(errorMsg);
}

function makeSuggestions(
  detail: CompilerErrorDetailOptions | CompilerDiagnosticOptions,
): Array<Rule.SuggestionReportDescriptor> {
  const suggest: Array<Rule.SuggestionReportDescriptor> = [];
  if (Array.isArray(detail.suggestions)) {
    for (const suggestion of detail.suggestions) {
      switch (suggestion.op) {
        case CompilerSuggestionOperation.InsertBefore:
          suggest.push({
            desc: suggestion.description,
            fix(fixer) {
              return fixer.insertTextBeforeRange(
                suggestion.range,
                suggestion.text,
              );
            },
          });
          break;
        case CompilerSuggestionOperation.InsertAfter:
          suggest.push({
            desc: suggestion.description,
            fix(fixer) {
              return fixer.insertTextAfterRange(
                suggestion.range,
                suggestion.text,
              );
            },
          });
          break;
        case CompilerSuggestionOperation.Replace:
          suggest.push({
            desc: suggestion.description,
            fix(fixer) {
              return fixer.replaceTextRange(suggestion.range, suggestion.text);
// ... (149 more lines)

Domain

Subdomains

Types

Dependencies

Frequently Asked Questions

What does ReactCompilerRule.ts do?
ReactCompilerRule.ts is a source file in the react codebase, written in typescript. It belongs to the BabelCompiler domain, Validation subdomain.
What functions are defined in ReactCompilerRule.ts?
ReactCompilerRule.ts defines 9 function(s): allRules, assertExhaustive, getReactCompilerResult, hasFlowSuppression, makeRule, makeSuggestions, mapErrorSeverityToESlint, recommendedLatestRules, recommendedRules.
What does ReactCompilerRule.ts depend on?
ReactCompilerRule.ts imports 5 module(s): CompilerError, RunReactCompiler.ts, eslint, src, types.
What files import ReactCompilerRule.ts?
ReactCompilerRule.ts is imported by 8 file(s): ImpureFunctionCallsRule-test.ts, InvalidHooksRule-test.ts, NoAmbiguousJsxRule-test.ts, NoCapitalizedCallsRule-test.ts, NoRefAccessInRender-tests.ts, PluginTest-test.ts, index.ts, shared-utils.ts.
Where is ReactCompilerRule.ts in the architecture?
ReactCompilerRule.ts is located at compiler/packages/eslint-plugin-react-compiler/src/rules/ReactCompilerRule.ts (domain: BabelCompiler, subdomain: Validation, directory: compiler/packages/eslint-plugin-react-compiler/src/rules).

Analyze Your Own Codebase

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

Try Supermodel Free