installHook.js — react Source File
Architecture documentation for installHook.js, a javascript file in the react codebase. 6 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 1fa3327b_cae1_5cf2_9f33_dbea00aaa3ee["installHook.js"] 59285050_8b13_751c_3b39_93ecdb0aa385["messages.js"] 1fa3327b_cae1_5cf2_9f33_dbea00aaa3ee --> 59285050_8b13_751c_3b39_93ecdb0aa385 b9e76cd2_712c_d143_3531_87d4f39c2083["postMessage"] 1fa3327b_cae1_5cf2_9f33_dbea00aaa3ee --> b9e76cd2_712c_d143_3531_87d4f39c2083 40bf6909_04ae_bfb6_965f_14cfe98b94de["types"] 1fa3327b_cae1_5cf2_9f33_dbea00aaa3ee --> 40bf6909_04ae_bfb6_965f_14cfe98b94de aec7978f_0a19_ba93_de9e_ac8cf5ddc74b["types"] 1fa3327b_cae1_5cf2_9f33_dbea00aaa3ee --> aec7978f_0a19_ba93_de9e_ac8cf5ddc74b bdc0f51e_4952_e5a8_d3d8_502a65e31437["hook"] 1fa3327b_cae1_5cf2_9f33_dbea00aaa3ee --> bdc0f51e_4952_e5a8_d3d8_502a65e31437 627bb742_21aa_b4fd_fe2d_4a963a1f9278["utils"] 1fa3327b_cae1_5cf2_9f33_dbea00aaa3ee --> 627bb742_21aa_b4fd_fe2d_4a963a1f9278 style 1fa3327b_cae1_5cf2_9f33_dbea00aaa3ee fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
/** @flow */
import type {UnknownMessageEvent} from './messages';
import type {DevToolsHookSettings} from 'react-devtools-shared/src/backend/types';
import type {ComponentFilter} from 'react-devtools-shared/src/frontend/types';
import {installHook} from 'react-devtools-shared/src/hook';
import {
getIfReloadedAndProfiling,
getProfilingSettings,
} from 'react-devtools-shared/src/utils';
import {postMessage} from './messages';
let resolveHookSettingsInjection: (settings: DevToolsHookSettings) => void;
let resolveComponentFiltersInjection: (filters: Array<ComponentFilter>) => void;
function messageListener(event: UnknownMessageEvent) {
if (event.source !== window) {
return;
}
if (event.data.source === 'react-devtools-settings-injector') {
const payload = event.data.payload;
// In case handshake message was sent prior to hookSettingsInjector execution
// We can't guarantee order
if (payload.handshake) {
postMessage({
source: 'react-devtools-hook-installer',
payload: {handshake: true},
});
} else if (payload.hookSettings) {
window.removeEventListener('message', messageListener);
resolveHookSettingsInjection(payload.hookSettings);
resolveComponentFiltersInjection(payload.componentFilters);
}
}
}
// Avoid double execution
if (!window.hasOwnProperty('__REACT_DEVTOOLS_GLOBAL_HOOK__')) {
const hookSettingsPromise = new Promise<DevToolsHookSettings>(resolve => {
resolveHookSettingsInjection = resolve;
});
const componentFiltersPromise = new Promise<Array<ComponentFilter>>(
resolve => {
resolveComponentFiltersInjection = resolve;
},
);
window.addEventListener('message', messageListener);
postMessage({
source: 'react-devtools-hook-installer',
payload: {handshake: true},
});
const shouldStartProfiling = getIfReloadedAndProfiling();
const profilingSettings = getProfilingSettings();
// Can't delay hook installation, inject settings lazily
installHook(
window,
componentFiltersPromise,
hookSettingsPromise,
shouldStartProfiling,
profilingSettings,
);
// Detect React
window.__REACT_DEVTOOLS_GLOBAL_HOOK__.on(
'renderer',
function ({reactBuildType}) {
window.postMessage(
{
source: 'react-devtools-hook',
payload: {
type: 'react-renderer-attached',
reactBuildType,
},
},
'*',
);
},
);
}
Domain
Subdomains
Dependencies
- hook
- messages.js
- postMessage
- types
- types
- utils
Source
Frequently Asked Questions
What does installHook.js do?
installHook.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 installHook.js?
installHook.js defines 3 function(s): componentFiltersPromise, hookSettingsPromise, messageListener.
What does installHook.js depend on?
installHook.js imports 6 module(s): hook, messages.js, postMessage, types, types, utils.
Where is installHook.js in the architecture?
installHook.js is located at packages/react-devtools-extensions/src/contentScripts/installHook.js (domain: BabelCompiler, subdomain: Validation, 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