Home / File/ generateHookMap.js — react Source File

generateHookMap.js — react Source File

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

File javascript BabelCompiler 2 imports 5 dependents

Entity Profile

Dependency Diagram

graph LR
  d816dd9a_2650_2f50_e9eb_2cdf900b512f["generateHookMap.js"]
  22acaf1d_d624_cc04_9046_5e8603f3a58d["astUtils.js"]
  d816dd9a_2650_2f50_e9eb_2cdf900b512f --> 22acaf1d_d624_cc04_9046_5e8603f3a58d
  8b964ac1_528c_b6d4_9dc8_e2ee21534ee0["sourcemap-codec"]
  d816dd9a_2650_2f50_e9eb_2cdf900b512f --> 8b964ac1_528c_b6d4_9dc8_e2ee21534ee0
  5751162b_425a_76d9_4373_4cf5cde09b49["SourceMapMetadataConsumer.js"]
  5751162b_425a_76d9_4373_4cf5cde09b49 --> d816dd9a_2650_2f50_e9eb_2cdf900b512f
  1cf4efe1_9da2_a991_9522_cf313b27188c["SourceMapTypes.js"]
  1cf4efe1_9da2_a991_9522_cf313b27188c --> d816dd9a_2650_2f50_e9eb_2cdf900b512f
  13d4ecc3_5f1d_4757_b18c_5c1d3b72cb4f["generateHookMap-test.js"]
  13d4ecc3_5f1d_4757_b18c_5c1d3b72cb4f --> d816dd9a_2650_2f50_e9eb_2cdf900b512f
  1ab77cff_6803_e7fc_0f93_59c0fdfeb26e["getHookNameForLocation-test.js"]
  1ab77cff_6803_e7fc_0f93_59c0fdfeb26e --> d816dd9a_2650_2f50_e9eb_2cdf900b512f
  5ab6cc34_8610_de9f_93dc_9e7a8742ce9b["getHookNameForLocation.js"]
  5ab6cc34_8610_de9f_93dc_9e7a8742ce9b --> d816dd9a_2650_2f50_e9eb_2cdf900b512f
  style d816dd9a_2650_2f50_e9eb_2cdf900b512f 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 {getHookNamesMappingFromAST} from './astUtils';
import {encode, decode} from '@jridgewell/sourcemap-codec';

// Missing types in @babel/types
type File = any;

export type HookMap = {
  names: $ReadOnlyArray<string>,
  mappings: HookMapMappings,
};

export type EncodedHookMap = {
  names: $ReadOnlyArray<string>,
  mappings: string,
};

// See generateHookMap below for more details on formatting
export type HookMapEntry = [
  number, // 1-indexed line number
  number, // 0-indexed column number
  number, // 0-indexed index into names array
  number, // TODO: filler number to support reusing encoding from `sourcemap-codec` (see TODO below)
];
export type HookMapLine = HookMapEntry[];
export type HookMapMappings = HookMapLine[];

/**
 * Given a parsed source code AST, returns a "Hook Map", which is a
 * mapping which maps locations in the source code to their to their
 * corresponding Hook name, if there is a relevant Hook name for that
 * location (see getHookNamesMappingFromAST for details on the
 * representation of the mapping).
 *
 * The format of the Hook Map follows a similar format as the `name`
 * and `mappings` fields in the Source Map spec, where `names` is an
 * array of strings, and `mappings` contains segments lines, columns,
 * and indices into the `names` array.
 *
 * E.g.:
 *   {
 *     names: ["<no-hook>", "state"],
 *     mappings: [
 *       [ -> line 1
 *         [1, 0, 0],  -> line, col, name index
 *       ],
 *       [ -> line 2
 *         [2, 5, 1],  -> line, col, name index
 *         [2, 15, 0],  -> line, col, name index
 *       ],
 *     ],
 *   }
// ... (66 more lines)

Domain

Dependencies

Frequently Asked Questions

What does generateHookMap.js do?
generateHookMap.js is a source file in the react codebase, written in javascript. It belongs to the BabelCompiler domain.
What does generateHookMap.js depend on?
generateHookMap.js imports 2 module(s): astUtils.js, sourcemap-codec.
What files import generateHookMap.js?
generateHookMap.js is imported by 5 file(s): SourceMapMetadataConsumer.js, SourceMapTypes.js, generateHookMap-test.js, getHookNameForLocation-test.js, getHookNameForLocation.js.
Where is generateHookMap.js in the architecture?
generateHookMap.js is located at packages/react-devtools-shared/src/hooks/generateHookMap.js (domain: BabelCompiler, directory: packages/react-devtools-shared/src/hooks).

Analyze Your Own Codebase

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

Try Supermodel Free