Home / File/ evalScripts.js — react Source File

evalScripts.js — react Source File

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

File javascript BabelCompiler Validation 2 dependents 2 functions

Entity Profile

Dependency Diagram

graph LR
  3ed4f770_e0fe_be1b_53aa_15b5121435ea["evalScripts.js"]
  0f44cdf4_7331_0b75_974c_8ca0e100ac64["fallbackEvalContext.js"]
  0f44cdf4_7331_0b75_974c_8ca0e100ac64 --> 3ed4f770_e0fe_be1b_53aa_15b5121435ea
  5da5ec89_70b9_80cd_1b31_dcf27eddc57e["evalInInspectedWindow.js"]
  5da5ec89_70b9_80cd_1b31_dcf27eddc57e --> 3ed4f770_e0fe_be1b_53aa_15b5121435ea
  style 3ed4f770_e0fe_be1b_53aa_15b5121435ea 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
 */

export type EvalScriptIds =
  | 'checkIfReactPresentInInspectedWindow'
  | 'reload'
  | 'setBrowserSelectionFromReact'
  | 'setReactSelectionFromBrowser'
  | 'viewAttributeSource'
  | 'viewElementSource';

/*
 .fn for fallback in Content Script context
 .code for chrome.devtools.inspectedWindow.eval()
*/
type EvalScriptEntry = {
  fn: (...args: any[]) => any,
  code: (...args: any[]) => string,
};

/*
  Can not access `Developer Tools Console API` (e.g., inspect(), $0) in this context.
  So some fallback functions are no-op or throw error.
*/
export const evalScripts: {[key: EvalScriptIds]: EvalScriptEntry} = {
  checkIfReactPresentInInspectedWindow: {
    fn: () =>
      window.__REACT_DEVTOOLS_GLOBAL_HOOK__ &&
      window.__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.size > 0,
    code: () =>
      'window.__REACT_DEVTOOLS_GLOBAL_HOOK__ &&' +
      'window.__REACT_DEVTOOLS_GLOBAL_HOOK__.renderers.size > 0',
  },
  reload: {
    fn: () => window.location.reload(),
    code: () => 'window.location.reload();',
  },
  setBrowserSelectionFromReact: {
    fn: () => {
      throw new Error('Not supported in fallback eval context');
    },
    code: () =>
      '(window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$0 !== $0) ?' +
      '(inspect(window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$0), true) :' +
      'false',
  },
  setReactSelectionFromBrowser: {
    fn: () => {
      throw new Error('Not supported in fallback eval context');
    },
    code: () =>
      '(window.__REACT_DEVTOOLS_GLOBAL_HOOK__ && window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$0 !== $0) ?' +
      '(window.__REACT_DEVTOOLS_GLOBAL_HOOK__.$0 = $0, true) :' +
      'false',
  },
  viewAttributeSource: {
    fn: ({rendererID, elementID, path}) => {
      return false; // Not supported in fallback eval context
    },
    code: ({rendererID, elementID, path}) =>
      '{' + // The outer block is important because it means we can declare local variables.
      'const renderer = window.__REACT_DEVTOOLS_GLOBAL_HOOK__.rendererInterfaces.get(' +
      JSON.stringify(rendererID) +
      ');' +
      'if (renderer) {' +
      '  const value = renderer.getElementAttributeByPath(' +
      JSON.stringify(elementID) +
      ',' +
      JSON.stringify(path) +
      ');' +
      '  if (value) {' +
      '    inspect(value);' +
      '    true;' +
      '  } else {' +
      '    false;' +
      '  }' +
      '} else {' +
      '  false;' +
      '}' +
      '}',
  },
  viewElementSource: {
    fn: ({rendererID, elementID}) => {
      return false; // Not supported in fallback eval context
    },
    code: ({rendererID, elementID}) =>
      '{' + // The outer block is important because it means we can declare local variables.
      'const renderer = window.__REACT_DEVTOOLS_GLOBAL_HOOK__.rendererInterfaces.get(' +
      JSON.stringify(rendererID) +
      ');' +
      'if (renderer) {' +
      '  const value = renderer.getElementSourceFunctionById(' +
      JSON.stringify(elementID) +
      ');' +
      '  if (value) {' +
      '    inspect(value);' +
      '    true;' +
      '  } else {' +
      '    false;' +
      '  }' +
      '} else {' +
      '  false;' +
      '}' +
      '}',
  },
};

Domain

Subdomains

Frequently Asked Questions

What does evalScripts.js do?
evalScripts.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 evalScripts.js?
evalScripts.js defines 2 function(s): EvalScriptEntry.code, EvalScriptEntry.fn.
What files import evalScripts.js?
evalScripts.js is imported by 2 file(s): evalInInspectedWindow.js, fallbackEvalContext.js.
Where is evalScripts.js in the architecture?
evalScripts.js is located at packages/react-devtools-extensions/src/evalScripts.js (domain: BabelCompiler, subdomain: Validation, directory: packages/react-devtools-extensions/src).

Analyze Your Own Codebase

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

Try Supermodel Free