Home / File/ generateHookMap-test.js — react Source File

generateHookMap-test.js — react Source File

Architecture documentation for generateHookMap-test.js, a javascript file in the react codebase. 2 imports, 0 dependents.

File javascript BabelCompiler Validation 2 imports 1 functions

Entity Profile

Dependency Diagram

graph LR
  13d4ecc3_5f1d_4757_b18c_5c1d3b72cb4f["generateHookMap-test.js"]
  d816dd9a_2650_2f50_e9eb_2cdf900b512f["generateHookMap.js"]
  13d4ecc3_5f1d_4757_b18c_5c1d3b72cb4f --> d816dd9a_2650_2f50_e9eb_2cdf900b512f
  ba38a3cc_fa9d_cd5d_0746_ec93bcb397e1["parser"]
  13d4ecc3_5f1d_4757_b18c_5c1d3b72cb4f --> ba38a3cc_fa9d_cd5d_0746_ec93bcb397e1
  style 13d4ecc3_5f1d_4757_b18c_5c1d3b72cb4f 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.
 *
 * @flow
 */

import {parse} from '@babel/parser';
import {generateEncodedHookMap, generateHookMap} from '../generateHookMap';

function expectHookMapToEqual(actual, expected) {
  expect(actual.names).toEqual(expected.names);

  const formattedMappings = [];
  actual.mappings.forEach(lines => {
    lines.forEach(segment => {
      const name = actual.names[segment[2]];
      if (name == null) {
        throw new Error(`Expected to find name at position ${segment[2]}`);
      }
      formattedMappings.push(`${name} from ${segment[0]}:${segment[1]}`);
    });
  });
  expect(formattedMappings).toEqual(expected.mappings);
}

describe('generateHookMap', () => {
  it('should parse names for built-in hooks', () => {
    const code = `
import {useState, useContext, useMemo, useReducer} from 'react';

export function Component() {
  const a = useMemo(() => A);
  const [b, setB] = useState(0);

  // prettier-ignore
  const c = useContext(A), d = useContext(B); // eslint-disable-line one-var

  const [e, dispatch] = useReducer(reducer, initialState);
  const f = useRef(null)

  return a + b + c + d + e + f.current;
}`;

    const parsed = parse(code, {
      sourceType: 'module',
      plugins: ['jsx', 'flow'],
    });
    const hookMap = generateHookMap(parsed);
    expectHookMapToEqual(hookMap, {
      names: ['<no-hook>', 'a', 'b', 'c', 'd', 'e', 'f'],
      mappings: [
        '<no-hook> from 1:0',
        'a from 5:12',
        '<no-hook> from 5:28',
        'b from 6:20',
        '<no-hook> from 6:31',
        'c from 9:12',
// ... (153 more lines)

Domain

Subdomains

Dependencies

Frequently Asked Questions

What does generateHookMap-test.js do?
generateHookMap-test.js is a source file in the react codebase, written in javascript. It belongs to the BabelCompiler domain, Validation subdomain.
What functions are defined in generateHookMap-test.js?
generateHookMap-test.js defines 1 function(s): expectHookMapToEqual.
What does generateHookMap-test.js depend on?
generateHookMap-test.js imports 2 module(s): generateHookMap.js, parser.
Where is generateHookMap-test.js in the architecture?
generateHookMap-test.js is located at packages/react-devtools-shared/src/hooks/__tests__/generateHookMap-test.js (domain: BabelCompiler, subdomain: Validation, directory: packages/react-devtools-shared/src/hooks/__tests__).

Analyze Your Own Codebase

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

Try Supermodel Free