Home / Function/ transformProgram() — react Function Reference

transformProgram() — react Function Reference

Architecture documentation for the transformProgram() function in ValidateNoUntransformedReferences.ts from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  6c6008c2_2667_c1e0_d0ae_ea81069aa361["transformProgram()"]
  93f3a2c7_a7ce_3c94_87fe_ee7d66d9b64b["ValidateNoUntransformedReferences.ts"]
  6c6008c2_2667_c1e0_d0ae_ea81069aa361 -->|defined in| 93f3a2c7_a7ce_3c94_87fe_ee7d66d9b64b
  e9305144_35b9_6cfd_0fec_af0783a96987["validateNoUntransformedReferences()"]
  e9305144_35b9_6cfd_0fec_af0783a96987 -->|calls| 6c6008c2_2667_c1e0_d0ae_ea81069aa361
  a4f6bed9_c265_4ac2_4912_8b61d4121efb["validateImportSpecifier()"]
  6c6008c2_2667_c1e0_d0ae_ea81069aa361 -->|calls| a4f6bed9_c265_4ac2_4912_8b61d4121efb
  7ba64864_37b8_333a_82c1_22a93c4b5c66["validateNamespacedImport()"]
  6c6008c2_2667_c1e0_d0ae_ea81069aa361 -->|calls| 7ba64864_37b8_333a_82c1_22a93c4b5c66
  style 6c6008c2_2667_c1e0_d0ae_ea81069aa361 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

compiler/packages/babel-plugin-react-compiler/src/Entrypoint/ValidateNoUntransformedReferences.ts lines 270–315

function transformProgram(
  path: NodePath<t.Program>,

  moduleLoadChecks: Map<string, Map<string, CheckInvalidReferenceFn>>,
  filename: string | null,
  logger: Logger | null,
  compileResult: CompileProgramMetadata | null,
): void {
  const traversalState: TraversalState = {
    shouldInvalidateScopes: true,
    program: path,
    filename,
    logger,
    transformErrors: compileResult?.retryErrors ?? [],
    inferredEffectLocations:
      compileResult?.inferredEffectLocations ?? new Set(),
  };
  path.traverse({
    ImportDeclaration(path: NodePath<t.ImportDeclaration>) {
      const importSpecifierChecks = moduleLoadChecks.get(
        path.node.source.value,
      );
      if (importSpecifierChecks == null) {
        return;
      }
      const specifiers = path.get('specifiers');
      for (const specifier of specifiers) {
        if (specifier.isImportSpecifier()) {
          validateImportSpecifier(
            specifier,
            importSpecifierChecks,
            traversalState,
          );
        } else {
          validateNamespacedImport(
            specifier as NodePath<
              t.ImportNamespaceSpecifier | t.ImportDefaultSpecifier
            >,
            importSpecifierChecks,
            traversalState,
          );
        }
      }
    },
  });
}

Domain

Subdomains

Frequently Asked Questions

What does transformProgram() do?
transformProgram() is a function in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/Entrypoint/ValidateNoUntransformedReferences.ts.
Where is transformProgram() defined?
transformProgram() is defined in compiler/packages/babel-plugin-react-compiler/src/Entrypoint/ValidateNoUntransformedReferences.ts at line 270.
What does transformProgram() call?
transformProgram() calls 2 function(s): validateImportSpecifier, validateNamespacedImport.
What calls transformProgram()?
transformProgram() is called by 1 function(s): validateNoUntransformedReferences.

Analyze Your Own Codebase

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

Try Supermodel Free