make parseHookNames a separate bundle (#22102)

This commit is contained in:
Luna Ruan 2021-08-16 13:46:46 -07:00 committed by GitHub
parent 55d01aa0f3
commit f6ec4661db
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 44 deletions

View File

@ -62,7 +62,7 @@ describe('parseHookNames', () => {
inspectHooks = require('react-debug-tools/src/ReactDebugHooks')
.inspectHooks;
parseHookNames = require('../parseHookNames').parseHookNames;
parseHookNames = require('../parseHookNames/parseHookNames').parseHookNames;
// Jest (jest-runner?) configures Errors to automatically account for source maps.
// This changes behavior between our tests and the browser.
@ -718,22 +718,13 @@ describe('parseHookNames', () => {
describe('parseHookNames worker', () => {
let inspectHooks;
let parseHookNames;
let originalParseHookNamesMock;
let workerizedParseHookNamesMock;
beforeEach(() => {
window.Worker = undefined;
originalParseHookNamesMock = jest.fn();
workerizedParseHookNamesMock = jest.fn();
jest.mock('../parseHookNames/parseHookNames.js', () => {
return {
__esModule: true,
parseHookNames: originalParseHookNamesMock,
};
});
jest.mock('../parseHookNames/parseHookNames.worker.js', () => {
return {
__esModule: true,
@ -757,7 +748,7 @@ describe('parseHookNames worker', () => {
return hookNames;
}
it('should use worker when available', async () => {
it('should use worker', async () => {
const Component = require('./__source__/__untransformed__/ComponentWithUseState')
.Component;
@ -769,13 +760,4 @@ describe('parseHookNames worker', () => {
await getHookNamesForComponent(Component);
expect(workerizedParseHookNamesMock).toHaveBeenCalledTimes(1);
});
it('should use main thread when worker is not available', async () => {
const Component = require('./__source__/__untransformed__/ComponentWithUseState')
.Component;
await getHookNamesForComponent(Component);
expect(workerizedParseHookNamesMock).toHaveBeenCalledTimes(0);
expect(originalParseHookNamesMock).toHaveBeenCalledTimes(1);
});
});

View File

@ -12,7 +12,6 @@ import {
getSavedComponentFilters,
getShowInlineWarningsAndErrors,
} from 'react-devtools-shared/src/utils';
import {parseHookNames, purgeCachedMetadata} from './parseHookNames';
import {
localStorageGetItem,
localStorageRemoveItem,
@ -210,23 +209,26 @@ function createPanelIfReactLoaded() {
render = (overrideTab = mostRecentOverrideTab) => {
mostRecentOverrideTab = overrideTab;
root.render(
createElement(DevTools, {
bridge,
browserTheme: getBrowserTheme(),
componentsPortalContainer,
enabledInspectedElementContextMenu: true,
loadHookNames: parseHookNames,
overrideTab,
profilerPortalContainer,
purgeCachedHookNamesMetadata: purgeCachedMetadata,
showTabBar: false,
store,
warnIfUnsupportedVersionDetected: true,
viewAttributeSourceFunction,
viewElementSourceFunction,
}),
import('./parseHookNames').then(
({parseHookNames, purgeCachedMetadata}) => {
root.render(
createElement(DevTools, {
bridge,
browserTheme: getBrowserTheme(),
componentsPortalContainer,
enabledInspectedElementContextMenu: true,
loadHookNames: parseHookNames,
overrideTab,
profilerPortalContainer,
purgeCachedHookNamesMetadata: purgeCachedMetadata,
showTabBar: false,
store,
warnIfUnsupportedVersionDetected: true,
viewAttributeSourceFunction,
viewElementSourceFunction,
}),
);
},
);
};

View File

@ -12,17 +12,13 @@
// This file uses workerize to load ./parseHookNames.worker as a webworker and instanciates it,
// exposing flow typed functions that can be used on other files.
import * as parseHookNamesModule from './parseHookNames';
import WorkerizedParseHookNames from './parseHookNames.worker';
type ParseHookNamesModule = typeof parseHookNamesModule;
import typeof * as ParseHookNamesModule from './parseHookNames';
// $FlowFixMe
const wasmMappingsURL = chrome.extension.getURL('mappings.wasm');
const workerizedParseHookNames: ParseHookNamesModule = window.Worker
? WorkerizedParseHookNames()
: parseHookNamesModule;
const workerizedParseHookNames: ParseHookNamesModule = WorkerizedParseHookNames();
type ParseHookNames = $PropertyType<ParseHookNamesModule, 'parseHookNames'>;

View File

@ -41,6 +41,7 @@ module.exports = {
},
output: {
path: __dirname + '/build',
publicPath: '/build/',
filename: '[name].js',
},
node: {