mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
* Extract the top element frame from ReactDebugCurrentFrame This is part of a larger refactor to decouple stack addendums. All renderers have their own way of getting the stack of the currently executing components. There is one special case in Element Validator that adds an additional line for the element being validated. This commit moves that special case in into the validator. There is another case where it looked like this was used in shallow renderer but this is actually something different. It is part of the component stack. It just happens to be that shallow renderer has a simpler implementation of the component stack that just happens to be a single element. This will let us decouple the implementation to get a stack from ReactDebugCurrentFrame and put that in each renderer. * Stop using ReactComponentTreeHook for Fiber Currently we fall back to ReactCurrentOwner in ReactComponentTreeHook for stack addendums. We shouldn't need to because we should use ReactDebugCurrrentFiber. Ensure we always set both ReactDebugCurrentFiber and ReactDebugCurrentFrame so that we can rely on these for all stacks. * Make ReactDebugCurrentFrame implementation independent Introduced ReactDebugCurrentStack for the Stack renderer which does the same thing as ReactDebugCurrentFiber. ReactDebugCurrentFrame no longer keeps track of the current fiber/debug id. That's handled by the individual renderers. Instead, it is now used to keep track of the current *implementation* of the current stack frame. That way it is decoupled from the specifics of the renderers. There can be multiple renderers in a context. What matters is which one is currently executing a debuggable context (such as a render function). * Add debug frames to ReactPartialRenderer (ssr) Basic functionality. * Add shared modules to shallow renderer This is now needed because we share describeComponentFrame.
423 lines
11 KiB
JavaScript
423 lines
11 KiB
JavaScript
'use strict';
|
|
|
|
const bundleTypes = {
|
|
UMD_DEV: 'UMD_DEV',
|
|
UMD_PROD: 'UMD_PROD',
|
|
NODE_DEV: 'NODE_DEV',
|
|
NODE_PROD: 'NODE_PROD',
|
|
FB_DEV: 'FB_DEV',
|
|
FB_PROD: 'FB_PROD',
|
|
RN_DEV: 'RN_DEV',
|
|
RN_PROD: 'RN_PROD',
|
|
};
|
|
|
|
const UMD_DEV = bundleTypes.UMD_DEV;
|
|
const UMD_PROD = bundleTypes.UMD_PROD;
|
|
const NODE_DEV = bundleTypes.NODE_DEV;
|
|
const NODE_PROD = bundleTypes.NODE_PROD;
|
|
const FB_DEV = bundleTypes.FB_DEV;
|
|
const FB_PROD = bundleTypes.FB_PROD;
|
|
const RN_DEV = bundleTypes.RN_DEV;
|
|
const RN_PROD = bundleTypes.RN_PROD;
|
|
|
|
const babelOptsReact = {
|
|
exclude: 'node_modules/**',
|
|
presets: [],
|
|
plugins: [],
|
|
};
|
|
|
|
const babelOptsReactART = Object.assign({}, babelOptsReact, {
|
|
// Include JSX
|
|
presets: babelOptsReact.presets.concat([
|
|
require.resolve('babel-preset-react'),
|
|
]),
|
|
});
|
|
|
|
const bundles = [
|
|
/******* Isomorphic *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [UMD_DEV, UMD_PROD, NODE_DEV, NODE_PROD, FB_DEV, FB_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
moduleName: 'React',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/isomorphic/ReactEntry',
|
|
externals: [
|
|
'create-react-class/factory',
|
|
'prop-types',
|
|
'prop-types/checkPropTypes',
|
|
],
|
|
fbEntry: 'src/isomorphic/ReactEntry',
|
|
hasteName: 'React',
|
|
isRenderer: false,
|
|
label: 'core',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react',
|
|
paths: [
|
|
'src/isomorphic/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
|
|
/******* React DOM *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [UMD_DEV, UMD_PROD, NODE_DEV, NODE_PROD, FB_DEV, FB_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactDOM',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/dom/fiber/ReactDOMFiberEntry',
|
|
externals: ['prop-types', 'prop-types/checkPropTypes'],
|
|
fbEntry: 'src/fb/ReactDOMFiberFBEntry',
|
|
hasteName: 'ReactDOMFiber',
|
|
isRenderer: true,
|
|
label: 'dom-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-dom',
|
|
paths: [
|
|
'src/renderers/dom/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [FB_DEV, NODE_DEV],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactTestUtils',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/dom/test/ReactTestUtilsEntry',
|
|
externals: [
|
|
'prop-types',
|
|
'prop-types/checkPropTypes',
|
|
'react',
|
|
'react-dom',
|
|
'react-test-renderer', // TODO (bvaughn) Remove this dependency before 16.0.0
|
|
],
|
|
fbEntry: 'src/renderers/dom/test/ReactTestUtilsEntry',
|
|
hasteName: 'ReactTestUtils',
|
|
isRenderer: true,
|
|
label: 'test-utils',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-dom/test-utils',
|
|
paths: [
|
|
'src/renderers/dom/test/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
'src/renderers/testing/**/*.js', // TODO (bvaughn) Remove this dependency before 16.0.0
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
/* React DOM internals required for react-native-web (e.g., to shim native events from react-dom) */
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [UMD_DEV, UMD_PROD, NODE_DEV, NODE_PROD, FB_DEV, FB_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
'react-dom': 'ReactDOM',
|
|
},
|
|
moduleName: 'ReactDOMUnstableNativeDependencies',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/dom/shared/ReactDOMUnstableNativeDependenciesEntry',
|
|
externals: [
|
|
'react-dom',
|
|
'ReactDOM',
|
|
'prop-types',
|
|
'prop-types/checkPropTypes',
|
|
],
|
|
fbEntry: 'src/renderers/dom/shared/ReactDOMUnstableNativeDependenciesEntry',
|
|
hasteName: 'ReactDOMUnstableNativeDependencies',
|
|
isRenderer: false,
|
|
label: 'dom-unstable-native-dependencies',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-dom/unstable-native-dependencies',
|
|
paths: [
|
|
'src/renderers/dom/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
|
|
/******* React DOM Server *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [UMD_DEV, UMD_PROD, NODE_DEV, NODE_PROD, FB_DEV, FB_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactDOMServer',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/dom/ReactDOMServerEntry',
|
|
externals: ['prop-types', 'prop-types/checkPropTypes'],
|
|
fbEntry: 'src/renderers/dom/ReactDOMServerEntry',
|
|
hasteName: 'ReactDOMServer',
|
|
isRenderer: true,
|
|
label: 'dom-server-string',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-dom/server',
|
|
paths: [
|
|
'src/renderers/dom/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [NODE_DEV, NODE_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactDOMNodeStream',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/dom/ReactDOMNodeStreamEntry',
|
|
externals: ['prop-types', 'prop-types/checkPropTypes', 'stream'],
|
|
isRenderer: true,
|
|
label: 'dom-server-node-stream',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-dom/node-stream',
|
|
paths: [
|
|
'src/renderers/dom/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
|
|
/******* React ART *******/
|
|
{
|
|
babelOpts: babelOptsReactART,
|
|
// TODO: we merge react-art repo into this repo so the NODE_DEV and NODE_PROD
|
|
// builds sync up to the building of the package directories
|
|
bundleTypes: [UMD_DEV, UMD_PROD, NODE_DEV, NODE_PROD, FB_DEV, FB_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactART',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/art/ReactARTFiberEntry',
|
|
externals: [
|
|
'art/modes/current',
|
|
'art/modes/fast-noSideEffects',
|
|
'art/core/transform',
|
|
'prop-types/checkPropTypes',
|
|
'react-dom',
|
|
],
|
|
fbEntry: 'src/renderers/art/ReactARTFiberEntry',
|
|
hasteName: 'ReactARTFiber',
|
|
isRenderer: true,
|
|
label: 'art-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-art',
|
|
paths: [
|
|
'src/renderers/art/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
|
|
/******* React Native *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [RN_DEV, RN_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
moduleName: 'ReactNativeStack',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/native/ReactNativeStackEntry',
|
|
externals: [
|
|
'ExceptionsManager',
|
|
'InitializeCore',
|
|
'ReactNativeFeatureFlags',
|
|
'RCTEventEmitter',
|
|
'TextInputState',
|
|
'UIManager',
|
|
'View',
|
|
'deepDiffer',
|
|
'deepFreezeAndThrowOnMutationInDev',
|
|
'flattenStyle',
|
|
'prop-types/checkPropTypes',
|
|
],
|
|
hasteName: 'ReactNativeStack',
|
|
isRenderer: true,
|
|
label: 'native-stack',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-native-renderer',
|
|
paths: [
|
|
'src/renderers/native/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
useFiber: false,
|
|
modulesToStub: [
|
|
"'createReactNativeComponentClassFiber'",
|
|
"'ReactNativeFiberRenderer'",
|
|
"'findNumericNodeHandleFiber'",
|
|
"'ReactNativeFiber'",
|
|
],
|
|
},
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [RN_DEV, RN_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
moduleName: 'ReactNativeFiber',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/native/ReactNativeFiberEntry',
|
|
externals: [
|
|
'ExceptionsManager',
|
|
'InitializeCore',
|
|
'ReactNativeFeatureFlags',
|
|
'RCTEventEmitter',
|
|
'TextInputState',
|
|
'UIManager',
|
|
'View',
|
|
'deepDiffer',
|
|
'deepFreezeAndThrowOnMutationInDev',
|
|
'flattenStyle',
|
|
'prop-types/checkPropTypes',
|
|
],
|
|
hasteName: 'ReactNativeFiber',
|
|
isRenderer: true,
|
|
label: 'native-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-native-renderer',
|
|
paths: [
|
|
'src/renderers/native/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
useFiber: true,
|
|
modulesToStub: [
|
|
"'createReactNativeComponentClassStack'",
|
|
"'findNumericNodeHandleStack'",
|
|
"'ReactNativeStack'",
|
|
],
|
|
},
|
|
|
|
/******* React Test Renderer *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [FB_DEV, NODE_DEV],
|
|
config: {
|
|
destDir: 'build/',
|
|
moduleName: 'ReactTestRenderer',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/testing/ReactTestRendererFiberEntry',
|
|
externals: ['prop-types/checkPropTypes'],
|
|
fbEntry: 'src/renderers/testing/ReactTestRendererFiberEntry',
|
|
hasteName: 'ReactTestRendererFiber',
|
|
isRenderer: true,
|
|
label: 'test-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-test-renderer',
|
|
paths: [
|
|
'src/renderers/native/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
'src/renderers/testing/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [FB_DEV, NODE_DEV],
|
|
config: {
|
|
destDir: 'build/',
|
|
moduleName: 'ReactShallowRenderer',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/testing/ReactShallowRendererEntry',
|
|
externals: [
|
|
'react-dom',
|
|
'prop-types/checkPropTypes',
|
|
'react-test-renderer',
|
|
],
|
|
fbEntry: 'src/renderers/testing/ReactShallowRendererEntry',
|
|
hasteName: 'ReactShallowRenderer',
|
|
isRenderer: true,
|
|
label: 'shallow-renderer',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-test-renderer/shallow',
|
|
paths: [
|
|
'src/renderers/shared/**/*.js',
|
|
'src/renderers/testing/**/*.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
|
|
/******* React Noop Renderer (used only for fixtures/fiber-debugger) *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [NODE_DEV],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactNoop',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/noop/ReactNoopEntry',
|
|
externals: ['prop-types/checkPropTypes', 'jest-matchers'],
|
|
isRenderer: true,
|
|
label: 'noop-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-noop-renderer',
|
|
paths: [
|
|
'src/renderers/noop/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
];
|
|
|
|
module.exports = {
|
|
bundleTypes,
|
|
bundles,
|
|
};
|