Home / File/ hookSettingsInjector.js — react Source File

hookSettingsInjector.js — react Source File

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

Entity Profile

Dependency Diagram

graph LR
  6a22ee12_770d_feef_4171_b5e1e5dd51b2["hookSettingsInjector.js"]
  59285050_8b13_751c_3b39_93ecdb0aa385["messages.js"]
  6a22ee12_770d_feef_4171_b5e1e5dd51b2 --> 59285050_8b13_751c_3b39_93ecdb0aa385
  b9e76cd2_712c_d143_3531_87d4f39c2083["postMessage"]
  6a22ee12_770d_feef_4171_b5e1e5dd51b2 --> b9e76cd2_712c_d143_3531_87d4f39c2083
  40bf6909_04ae_bfb6_965f_14cfe98b94de["types"]
  6a22ee12_770d_feef_4171_b5e1e5dd51b2 --> 40bf6909_04ae_bfb6_965f_14cfe98b94de
  aec7978f_0a19_ba93_de9e_ac8cf5ddc74b["types"]
  6a22ee12_770d_feef_4171_b5e1e5dd51b2 --> aec7978f_0a19_ba93_de9e_ac8cf5ddc74b
  627bb742_21aa_b4fd_fe2d_4a963a1f9278["utils"]
  6a22ee12_770d_feef_4171_b5e1e5dd51b2 --> 627bb742_21aa_b4fd_fe2d_4a963a1f9278
  style 6a22ee12_770d_feef_4171_b5e1e5dd51b2 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/* global chrome */
/** @flow */

// We can't use chrome.storage domain from scripts which are injected in ExecutionWorld.MAIN
// This is the only purpose of this script - to send persisted settings to installHook.js content script

import type {UnknownMessageEvent} from './messages';
import type {
  DevToolsHookSettings,
  DevToolsSettings,
} from 'react-devtools-shared/src/backend/types';
import type {ComponentFilter} from 'react-devtools-shared/src/frontend/types';
import {postMessage} from './messages';

import {getDefaultComponentFilters} from 'react-devtools-shared/src/utils';

async function messageListener(event: UnknownMessageEvent) {
  if (event.source !== window) {
    return;
  }

  if (event.data.source === 'react-devtools-hook-installer') {
    if (event.data.payload.handshake) {
      const settings: Partial<DevToolsSettings> =
        await chrome.storage.local.get();
      // If storage was empty (first installation), define default settings
      const hookSettings: DevToolsHookSettings = {
        appendComponentStack:
          typeof settings.appendComponentStack === 'boolean'
            ? settings.appendComponentStack
            : true,
        breakOnConsoleErrors:
          typeof settings.breakOnConsoleErrors === 'boolean'
            ? settings.breakOnConsoleErrors
            : false,
        showInlineWarningsAndErrors:
          typeof settings.showInlineWarningsAndErrors === 'boolean'
            ? settings.showInlineWarningsAndErrors
            : true,
        hideConsoleLogsInStrictMode:
          typeof settings.hideConsoleLogsInStrictMode === 'boolean'
            ? settings.hideConsoleLogsInStrictMode
            : false,
        disableSecondConsoleLogDimmingInStrictMode:
          typeof settings.disableSecondConsoleLogDimmingInStrictMode ===
          'boolean'
            ? settings.disableSecondConsoleLogDimmingInStrictMode
            : false,
      };
      const componentFilters: Array<ComponentFilter> = Array.isArray(
        settings.componentFilters,
      )
        ? settings.componentFilters
        : getDefaultComponentFilters();

      postMessage({
        source: 'react-devtools-settings-injector',
        payload: {hookSettings, componentFilters},
      });

      window.removeEventListener('message', messageListener);
    }
  }
}

window.addEventListener('message', messageListener);
postMessage({
  source: 'react-devtools-settings-injector',
  payload: {handshake: true},
});

Domain

Dependencies

Frequently Asked Questions

What does hookSettingsInjector.js do?
hookSettingsInjector.js is a source file in the react codebase, written in javascript. It belongs to the BabelCompiler domain.
What does hookSettingsInjector.js depend on?
hookSettingsInjector.js imports 5 module(s): messages.js, postMessage, types, types, utils.
Where is hookSettingsInjector.js in the architecture?
hookSettingsInjector.js is located at packages/react-devtools-extensions/src/contentScripts/hookSettingsInjector.js (domain: BabelCompiler, directory: packages/react-devtools-extensions/src/contentScripts).

Analyze Your Own Codebase

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

Try Supermodel Free