parseSourceAST() — react Function Reference
Architecture documentation for the parseSourceAST() function in parseSourceAndMetadata.js from the react codebase.
Entity Profile
Dependency Diagram
graph TD 9d4ba273_e848_2a3f_3413_5c52ec3c7da7["parseSourceAST()"] 76da1f28_5fe1_2c37_5657_67756acc6f55["parseSourceAndMetadata.js"] 9d4ba273_e848_2a3f_3413_5c52ec3c7da7 -->|defined in| 76da1f28_5fe1_2c37_5657_67756acc6f55 fba84d46_f44f_7ea7_9af3_a0121e3e1415["parseSourceAndMetadata()"] fba84d46_f44f_7ea7_9af3_a0121e3e1415 -->|calls| 9d4ba273_e848_2a3f_3413_5c52ec3c7da7 e143ca4a_ec05_68bf_1723_c70d5b1ab460["areSourceMapsAppliedToErrors()"] 9d4ba273_e848_2a3f_3413_5c52ec3c7da7 -->|calls| e143ca4a_ec05_68bf_1723_c70d5b1ab460 31b4a475_0699_69a6_a66b_1b98c50a5785["hasHookMap()"] 9d4ba273_e848_2a3f_3413_5c52ec3c7da7 -->|calls| 31b4a475_0699_69a6_a66b_1b98c50a5785 style 9d4ba273_e848_2a3f_3413_5c52ec3c7da7 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/react-devtools-shared/src/hooks/parseHookNames/parseSourceAndMetadata.js lines 222–381
function parseSourceAST(
locationKeyToHookSourceAndMetadata: LocationKeyToHookSourceAndMetadata,
locationKeyToHookParsedMetadata: LocationKeyToHookParsedMetadata,
): void {
locationKeyToHookSourceAndMetadata.forEach(
(hookSourceAndMetadata, locationKey) => {
const hookParsedMetadata =
locationKeyToHookParsedMetadata.get(locationKey);
if (hookParsedMetadata == null) {
throw Error(`Expected to find HookParsedMetadata for "${locationKey}"`);
}
if (hookParsedMetadata.originalSourceAST !== null) {
// Use cached metadata.
return;
}
if (
hookParsedMetadata.originalSourceURL != null &&
hookParsedMetadata.originalSourceCode != null &&
hookParsedMetadata.originalSourceColumnNumber != null &&
hookParsedMetadata.originalSourceLineNumber != null
) {
// Use cached metadata.
return;
}
const {lineNumber, columnNumber} = hookSourceAndMetadata.hookSource;
if (lineNumber == null || columnNumber == null) {
throw Error('Hook source code location not found.');
}
const {metadataConsumer, sourceMapConsumer} = hookParsedMetadata;
const runtimeSourceCode =
((hookSourceAndMetadata.runtimeSourceCode: any): string);
let hasHookMap = false;
let originalSourceURL;
let originalSourceCode;
let originalSourceColumnNumber;
let originalSourceLineNumber;
if (areSourceMapsAppliedToErrors() || sourceMapConsumer === null) {
// Either the current environment automatically applies source maps to errors,
// or the current code had no source map to begin with.
// Either way, we don't need to convert the Error stack frame locations.
originalSourceColumnNumber = columnNumber;
originalSourceLineNumber = lineNumber;
// There's no source map to parse here so we can just parse the original source itself.
originalSourceCode = runtimeSourceCode;
// TODO (named hooks) This mixes runtimeSourceURLs with source mapped URLs in the same cache key space.
// Namespace them?
originalSourceURL = hookSourceAndMetadata.runtimeSourceURL;
} else {
const {column, line, sourceContent, sourceURL} =
sourceMapConsumer.originalPositionFor({
columnNumber,
lineNumber,
});
if (sourceContent === null || sourceURL === null) {
throw Error(
`Could not find original source for line:${lineNumber} and column:${columnNumber}`,
);
}
originalSourceColumnNumber = column;
originalSourceLineNumber = line;
originalSourceCode = sourceContent;
originalSourceURL = sourceURL;
}
hookParsedMetadata.originalSourceCode = originalSourceCode;
hookParsedMetadata.originalSourceURL = originalSourceURL;
hookParsedMetadata.originalSourceLineNumber = originalSourceLineNumber;
hookParsedMetadata.originalSourceColumnNumber =
originalSourceColumnNumber;
if (
metadataConsumer != null &&
metadataConsumer.hasHookMap(originalSourceURL)
) {
hasHookMap = true;
}
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does parseSourceAST() do?
parseSourceAST() is a function in the react codebase, defined in packages/react-devtools-shared/src/hooks/parseHookNames/parseSourceAndMetadata.js.
Where is parseSourceAST() defined?
parseSourceAST() is defined in packages/react-devtools-shared/src/hooks/parseHookNames/parseSourceAndMetadata.js at line 222.
What does parseSourceAST() call?
parseSourceAST() calls 2 function(s): areSourceMapsAppliedToErrors, hasHookMap.
What calls parseSourceAST()?
parseSourceAST() is called by 1 function(s): parseSourceAndMetadata.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free