[UMD] Remove umd builds (#28735)

In React 19 React will finally stop publishing UMD builds. This is
motivated primarily by the lack of use of UMD format and the added
complexity of maintaining build infra for these releases. Additionally
with ESM becoming more prevalent in browsers and services like esm.sh
which can host React as an ESM module there are other options for doing
script tag based react loading.

This PR removes all the UMD build configs and forks.

There are some fixtures that still have references to UMD builds however
many of them already do not work (for instance they are using legacy
features like ReactDOM.render) and rather than block the removal on
these fixtures being brought up to date we'll just move forward and fix
or removes fixtures as necessary in the future.
This commit is contained in:
Josh Story 2024-04-17 11:15:27 -07:00 committed by GitHub
parent 0c245df1dc
commit da6ba53b10
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
42 changed files with 1123 additions and 841 deletions

View File

@ -545,7 +545,6 @@ module.exports = {
__EXTENSION__: 'readonly', __EXTENSION__: 'readonly',
__PROFILE__: 'readonly', __PROFILE__: 'readonly',
__TEST__: 'readonly', __TEST__: 'readonly',
__UMD__: 'readonly',
__VARIANT__: 'readonly', __VARIANT__: 'readonly',
__unmockReact: 'readonly', __unmockReact: 'readonly',
gate: 'readonly', gate: 'readonly',

View File

@ -10,8 +10,8 @@ of the React project. Then:
``` ```
cd fixtures/dom cd fixtures/dom
yarn yarn
yarn start yarn dev
``` ```
The `start` command runs a script that copies over the local build of react into The `dev` command runs a script that copies over the local build of react into
the public directory. the public directory.

View File

@ -20,7 +20,7 @@
}, },
"scripts": { "scripts": {
"dev": "react-scripts start", "dev": "react-scripts start",
"predev": "cp ../../build/oss-stable/scheduler/umd/scheduler-unstable_mock.development.js ../../build/oss-stable/scheduler/umd/scheduler-unstable_mock.production.min.js ../../build/oss-stable/react/umd/react.development.js ../../build/oss-stable/react-dom/umd/react-dom.development.js ../../build/oss-stable/react/umd/react.production.min.js ../../build/oss-stable/react-dom/umd/react-dom.production.min.js ../../build/oss-stable/react-dom/umd/react-dom-server.browser.development.js ../../build/oss-stable/react-dom/umd/react-dom-server.browser.production.min.js ../../build/oss-stable/react-dom/umd/react-dom-test-utils.development.js ../../build/oss-stable/react-dom/umd/react-dom-test-utils.production.min.js public/ && cp -a ../../build/oss-stable/. node_modules", "predev": "cp -a ../../build/oss-stable/. node_modules",
"build": "react-scripts build && cp build/index.html build/200.html", "build": "react-scripts build && cp build/index.html build/200.html",
"test": "react-scripts test --env=jsdom", "test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject" "eject": "react-scripts eject"

View File

@ -6,8 +6,16 @@ loadReact()
.then(App => { .then(App => {
const {React, ReactDOM} = window; const {React, ReactDOM} = window;
ReactDOM.render( if (typeof window.ReactDOMClient !== 'undefined') {
React.createElement(App.default), // we are in a React that only supports modern roots
document.getElementById('root')
); ReactDOM.createRoot(document.getElementById('root')).render(
React.createElement(App.default)
);
} else {
ReactDOM.render(
React.createElement(App.default),
document.getElementById('root')
);
}
}); });

View File

@ -36,6 +36,33 @@ function loadScript(src) {
}); });
} }
function loadModules(SymbolSrcPairs) {
let firstScript = document.getElementsByTagName('script')[0];
let imports = '';
SymbolSrcPairs.map(([symbol, src]) => {
imports += `import ${symbol} from "${src}";\n`;
imports += `window.${symbol} = ${symbol};\n`;
});
return new Promise((resolve, reject) => {
const timeout = setTimeout(
() => reject(new Error('Timed out loading react modules over esm')),
5000
);
window.__loaded = () => {
clearTimeout(timeout);
resolve();
};
const moduleScript = document.createElement('script');
moduleScript.type = 'module';
moduleScript.textContent = imports + 'window.__loaded();';
firstScript.parentNode.insertBefore(moduleScript, firstScript);
});
}
function getVersion() { function getVersion() {
let query = parseQuery(window.location.search); let query = parseQuery(window.location.search);
return query.version || 'local'; return query.version || 'local';
@ -47,12 +74,15 @@ export function reactPaths(version = getVersion()) {
let environment = isProduction ? 'production.min' : 'development'; let environment = isProduction ? 'production.min' : 'development';
let reactPath = `react.${environment}.js`; let reactPath = `react.${environment}.js`;
let reactDOMPath = `react-dom.${environment}.js`; let reactDOMPath = `react-dom.${environment}.js`;
let reactDOMClientPath = `react-dom.${environment}.js`;
let reactDOMServerPath = `react-dom-server.browser.${environment}.js`; let reactDOMServerPath = `react-dom-server.browser.${environment}.js`;
let needsCreateElement = true; let needsCreateElement = true;
let needsReactDOM = true; let needsReactDOM = true;
let usingModules = false;
if (version !== 'local') { if (version !== 'local') {
const {major, minor, prerelease} = semver(version); const {major, minor, prerelease} = semver(version);
console.log('semver', semver(version));
if (major === 0) { if (major === 0) {
needsCreateElement = minor >= 12; needsCreateElement = minor >= 12;
@ -62,7 +92,16 @@ export function reactPaths(version = getVersion()) {
const [preReleaseStage] = prerelease; const [preReleaseStage] = prerelease;
// The file structure was updated in 16. This wasn't the case for alphas. // The file structure was updated in 16. This wasn't the case for alphas.
// Load the old module location for anything less than 16 RC // Load the old module location for anything less than 16 RC
if (major >= 16 && !(minor === 0 && preReleaseStage === 'alpha')) { if (major >= 19) {
usingModules = true;
const devQuery = environment === 'development' ? '?dev' : '';
reactPath = 'https://esm.sh/react@' + version + '/' + devQuery;
reactDOMPath = 'https://esm.sh/react-dom@' + version + '/' + devQuery;
reactDOMClientPath =
'https://esm.sh/react-dom@' + version + '/client' + devQuery;
reactDOMServerPath =
'https://esm.sh/react-dom@' + version + '/server.browser' + devQuery;
} else if (major >= 16 && !(minor === 0 && preReleaseStage === 'alpha')) {
reactPath = reactPath =
'https://unpkg.com/react@' + 'https://unpkg.com/react@' +
version + version +
@ -90,30 +129,50 @@ export function reactPaths(version = getVersion()) {
reactPath = reactPath =
'https://cdnjs.cloudflare.com/ajax/libs/react/' + version + '/react.js'; 'https://cdnjs.cloudflare.com/ajax/libs/react/' + version + '/react.js';
} }
} else {
throw new Error(
'This fixture no longer works with local versions. Provide a version query parameter that matches a version published to npm to use the fixture.'
);
} }
return { return {
reactPath, reactPath,
reactDOMPath, reactDOMPath,
reactDOMClientPath,
reactDOMServerPath, reactDOMServerPath,
needsCreateElement, needsCreateElement,
needsReactDOM, needsReactDOM,
usingModules,
}; };
} }
export default function loadReact() { export default function loadReact() {
const {reactPath, reactDOMPath, needsReactDOM} = reactPaths(); console.log('reactPaths', reactPaths());
const {
reactPath,
reactDOMPath,
reactDOMClientPath,
needsReactDOM,
usingModules,
} = reactPaths();
let request = loadScript(reactPath); if (usingModules) {
return loadModules([
if (needsReactDOM) { ['React', reactPath],
request = request.then(() => loadScript(reactDOMPath)); ['ReactDOM', reactDOMPath],
['ReactDOMClient', reactDOMClientPath],
]);
} else { } else {
// Aliasing React to ReactDOM for compatibility. let request = loadScript(reactPath, usingModules);
request = request.then(() => {
window.ReactDOM = window.React;
});
}
return request; if (needsReactDOM) {
request = request.then(() => loadScript(reactDOMPath, usingModules));
} else {
// Aliasing React to ReactDOM for compatibility.
request = request.then(() => {
window.ReactDOM = window.React;
});
}
return request;
}
} }

View File

@ -1,224 +0,0 @@
<!DOCTYPE html>
<html style="width: 100%; height: 100%; overflow: hidden">
<head>
<meta charset="utf-8">
<title>Fiber Example</title>
</head>
<body>
<h1>Fiber Example</h1>
<div id="container">
<p>
To install React, follow the instructions on
<a href="https://github.com/facebook/react/">GitHub</a>.
</p>
<p>
If you can see this, React is <strong>not</strong> working right.
If you checked out the source from GitHub make sure to run <code>npm run build</code>.
</p>
</div>
<script src="../../build/oss-experimental/react/umd/react.development.js"></script>
<script src="../../build/oss-experimental/react-dom/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/babel-standalone@6/babel.js"></script>
<script type="text/babel">
var dotStyle = {
position: 'absolute',
background: '#61dafb',
font: 'normal 15px sans-serif',
textAlign: 'center',
cursor: 'pointer',
};
var containerStyle = {
position: 'absolute',
transformOrigin: '0 0',
left: '50%',
top: '50%',
width: '10px',
height: '10px',
background: '#eee',
};
var targetSize = 25;
class Dot extends React.Component {
constructor() {
super();
this.state = { hover: false };
}
enter() {
this.setState({
hover: true
});
}
leave() {
this.setState({
hover: false
});
}
render() {
var props = this.props;
var s = props.size * 1.3;
var style = {
...dotStyle,
width: s + 'px',
height: s + 'px',
left: (props.x) + 'px',
top: (props.y) + 'px',
borderRadius: (s / 2) + 'px',
lineHeight: (s) + 'px',
background: this.state.hover ? '#ff0' : dotStyle.background
};
return (
<div style={style} onMouseEnter={() => this.enter()} onMouseLeave={() => this.leave()}>
{this.state.hover ? '*' + props.text + '*' : props.text}
</div>
);
}
}
class SierpinskiTriangle extends React.Component {
shouldComponentUpdate(nextProps) {
var o = this.props;
var n = nextProps;
return !(
o.x === n.x &&
o.y === n.y &&
o.s === n.s &&
o.children === n.children
);
}
render() {
let {x, y, s, children} = this.props;
if (s <= targetSize) {
return (
<Dot
x={x - (targetSize / 2)}
y={y - (targetSize / 2)}
size={targetSize}
text={children}
/>
);
return r;
}
var newSize = s / 2;
var slowDown = true;
if (slowDown) {
var e = performance.now() + 0.8;
while (performance.now() < e) {
// Artificially long execution time.
}
}
s /= 2;
return [
<SierpinskiTriangle x={x} y={y - (s / 2)} s={s}>
{children}
</SierpinskiTriangle>,
<SierpinskiTriangle x={x - s} y={y + (s / 2)} s={s}>
{children}
</SierpinskiTriangle>,
<SierpinskiTriangle x={x + s} y={y + (s / 2)} s={s}>
{children}
</SierpinskiTriangle>,
];
}
}
class ExampleApplication extends React.Component {
constructor() {
super();
this.state = {
seconds: 0,
useTimeSlicing: true,
};
this.tick = this.tick.bind(this);
this.onTimeSlicingChange = this.onTimeSlicingChange.bind(this);
}
componentDidMount() {
this.intervalID = setInterval(this.tick, 1000);
}
tick() {
if (this.state.useTimeSlicing) {
// Update is time-sliced.
ReactDOM.unstable_deferredUpdates(() => {
this.setState(state => ({ seconds: (state.seconds % 10) + 1 }));
});
} else {
// Update is not time-sliced. Causes demo to stutter.
this.setState(state => ({ seconds: (state.seconds % 10) + 1 }));
}
}
onTimeSlicingChange(value) {
this.setState(() => ({ useTimeSlicing: value }));
}
componentWillUnmount() {
clearInterval(this.intervalID);
}
render() {
const seconds = this.state.seconds;
const elapsed = this.props.elapsed;
const t = (elapsed / 1000) % 10;
const scale = 1 + (t > 5 ? 10 - t : t) / 10;
const transform = 'scaleX(' + (scale / 2.1) + ') scaleY(0.7) translateZ(0.1px)';
return (
<div>
<div>
<h3>Time-slicing</h3>
<p>Toggle this and observe the effect</p>
<Toggle
onLabel="On"
offLabel="Off"
onChange={this.onTimeSlicingChange}
value={this.state.useTimeSlicing}
/>
</div>
<div style={{ ...containerStyle, transform }}>
<div>
<SierpinskiTriangle x={0} y={0} s={1000}>
{this.state.seconds}
</SierpinskiTriangle>
</div>
</div>
</div>
);
}
}
class Toggle extends React.Component {
constructor(props) {
super();
this.onChange = this.onChange.bind(this);
}
onChange(event) {
this.props.onChange(event.target.value === 'on');
}
render() {
const value = this.props.value;
return (
<label onChange={this.onChange}>
<label>
{this.props.onLabel}
<input type="radio" name="value" value="on" checked={value} />
</label>
<label>
{this.props.offLabel}
<input type="radio" name="value" value="off" checked={!value} />
</label>
</label>
);
}
}
var start = new Date().getTime();
function update() {
ReactDOM.render(
<ExampleApplication elapsed={new Date().getTime() - start} />,
document.getElementById('container')
);
requestAnimationFrame(update);
}
requestAnimationFrame(update);
</script>
</body>
</html>

View File

@ -16,9 +16,15 @@
If you checked out the source from GitHub make sure to run <code>npm run build</code>. If you checked out the source from GitHub make sure to run <code>npm run build</code>.
</p> </p>
</div> </div>
<script src="../../build/oss-experimental/react/umd/react.development.js"></script> <script type="module">
<script src="../../build/oss-experimental/react-dom/umd/react-dom.development.js"></script> import React from "https://esm.sh/react@canary?dev";
<script src="../../build/oss-experimental/react-dom/umd/react-dom-server.browser.development.js"></script> import ReactDOM from "https://esm.sh/react-dom@canary?dev";
import ReactDOMServer from "https://esm.sh/react-dom@canary/server.browser?dev";
window.React = React;
window.ReactDOM = ReactDOM;
window.ReactDOMServer = ReactDOMServer;
</script>
<script src="https://unpkg.com/babel-standalone@6/babel.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.js"></script>
<script type="text/babel"> <script type="text/babel">
async function render() { async function render() {

View File

@ -6,8 +6,8 @@ function _assertThisInitialized(self) {
} }
return self; return self;
} }
function _defineProperty(obj, key, value) { function _defineProperty(obj, key, value) {
key = _toPropertyKey(key);
if (key in obj) { if (key in obj) {
Object.defineProperty(obj, key, { Object.defineProperty(obj, key, {
value: value, value: value,
@ -20,60 +20,61 @@ function _defineProperty(obj, key, value) {
} }
return obj; return obj;
} }
function _toPropertyKey(t) {
var i = _toPrimitive(t, 'string');
return 'symbol' == typeof i ? i : i + '';
}
function _toPrimitive(t, r) {
if ('object' != typeof t || !t) return t;
var e = t[Symbol.toPrimitive];
if (void 0 !== e) {
var i = e.call(t, r || 'default');
if ('object' != typeof i) return i;
throw new TypeError('@@toPrimitive must return a primitive value.');
}
return ('string' === r ? String : Number)(t);
}
function _inheritsLoose(subClass, superClass) { function _inheritsLoose(subClass, superClass) {
subClass.prototype = Object.create(superClass.prototype); subClass.prototype = Object.create(superClass.prototype);
subClass.prototype.constructor = subClass; subClass.prototype.constructor = subClass;
subClass.__proto__ = superClass; _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf
? Object.setPrototypeOf.bind()
: function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
} }
// Compile this with Babel. // Compile this with Babel.
// babel --config-file ./babel.config.json BabelClasses.js --out-file BabelClasses-compiled.js --source-maps // babel --config-file ./babel.config.json BabelClasses.js --out-file BabelClasses-compiled.js --source-maps
let BabelClass = /*#__PURE__*/ (function (_React$Component) {
_inheritsLoose(BabelClass, _React$Component);
export let BabelClass = /*#__PURE__*/ (function (_React$Component) {
_inheritsLoose(BabelClass, _React$Component);
function BabelClass() { function BabelClass() {
return _React$Component.apply(this, arguments) || this; return _React$Component.apply(this, arguments) || this;
} }
var _proto = BabelClass.prototype; var _proto = BabelClass.prototype;
_proto.render = function render() { _proto.render = function render() {
return this.props.children; return this.props.children;
}; };
return BabelClass; return BabelClass;
})(React.Component); })(React.Component);
export let BabelClassWithFields = /*#__PURE__*/ (function (_React$Component2) {
let BabelClassWithFields = /*#__PURE__*/ (function (_React$Component2) {
_inheritsLoose(BabelClassWithFields, _React$Component2); _inheritsLoose(BabelClassWithFields, _React$Component2);
function BabelClassWithFields(...args) { function BabelClassWithFields(...args) {
var _this; var _this;
_this = _React$Component2.call(this, ...args) || this; _this = _React$Component2.call(this, ...args) || this;
_defineProperty(_assertThisInitialized(_this), 'props', void 0);
_defineProperty( _defineProperty(_assertThisInitialized(_this), 'state', {});
_assertThisInitialized(_assertThisInitialized(_this)),
'props',
void 0
);
_defineProperty(
_assertThisInitialized(_assertThisInitialized(_this)),
'state',
{}
);
return _this; return _this;
} } // These compile to defineProperty which can break some interception techniques.
var _proto2 = BabelClassWithFields.prototype; var _proto2 = BabelClassWithFields.prototype;
_proto2.render = function render() { _proto2.render = function render() {
return this.props.children; return this.props.children;
}; };
return BabelClassWithFields; return BabelClassWithFields;
})(React.Component); })(React.Component);

View File

@ -1 +1 @@
{"version":3,"sources":["BabelClasses.js"],"names":[],"mappings":";;;;;;AAAA;AACA;IAEM,U;;;;;;;;;SACJ,M,qBAAS;AACP,WAAO,KAAK,KAAL,CAAW,QAAlB;AACD,G;;;EAHsB,KAAK,CAAC,S;;IAMzB,oB;;;;;;;;;;oFAGI,E;;;;;;;UACR,M,qBAAS;AACP,WAAO,KAAK,KAAL,CAAW,QAAlB;AACD,G;;;EANgC,KAAK,CAAC,S","file":"BabelClasses-compiled.js","sourcesContent":["// Compile this with Babel.\n// babel --config-file ./babel.config.json BabelClasses.js --out-file BabelClasses-compiled.js --source-maps\n\nclass BabelClass extends React.Component {\n render() {\n return this.props.children;\n }\n}\n\nclass BabelClassWithFields extends React.Component {\n // These compile to defineProperty which can break some interception techniques.\n props;\n state = {};\n render() {\n return this.props.children;\n }\n}\n"]} {"version":3,"file":"BabelClasses-compiled.js","names":["BabelClass","_React$Component","_inheritsLoose","apply","arguments","_proto","prototype","render","props","children","React","Component","BabelClassWithFields","_React$Component2","args","_this","call","_defineProperty","_assertThisInitialized","_proto2"],"sources":["BabelClasses.js"],"sourcesContent":["// Compile this with Babel.\n// babel --config-file ./babel.config.json BabelClasses.js --out-file BabelClasses-compiled.js --source-maps\n\nexport class BabelClass extends React.Component {\n render() {\n return this.props.children;\n }\n}\n\nexport class BabelClassWithFields extends React.Component {\n // These compile to defineProperty which can break some interception techniques.\n props;\n state = {};\n render() {\n return this.props.children;\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;;AAEA,WAAaA,UAAU,0BAAAC,gBAAA;EAAAC,cAAA,CAAAF,UAAA,EAAAC,gBAAA;EAAA,SAAAD,WAAA;IAAA,OAAAC,gBAAA,CAAAE,KAAA,OAAAC,SAAA;EAAA;EAAA,IAAAC,MAAA,GAAAL,UAAA,CAAAM,SAAA;EAAAD,MAAA,CACrBE,MAAM,GAAN,SAAAA,OAAA,EAAS;IACP,OAAO,IAAI,CAACC,KAAK,CAACC,QAAQ;EAC5B,CAAC;EAAA,OAAAT,UAAA;AAAA,EAH6BU,KAAK,CAACC,SAAS;AAM/C,WAAaC,oBAAoB,0BAAAC,iBAAA;EAAAX,cAAA,CAAAU,oBAAA,EAAAC,iBAAA;EAAA,SAAAD,qBAAA,GAAAE,IAAA;IAAA,IAAAC,KAAA;IAAAA,KAAA,GAAAF,iBAAA,CAAAG,IAAA,UAAAF,IAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAH,KAAA;IAAAE,eAAA,CAAAC,sBAAA,CAAAH,KAAA,YAGvB,CAAC,CAAC;IAAA,OAAAA,KAAA;EAAA,EAFV;EAAA,IAAAI,OAAA,GAAAP,oBAAA,CAAAN,SAAA;EAAAa,OAAA,CAGAZ,MAAM,GAAN,SAAAA,OAAA,EAAS;IACP,OAAO,IAAI,CAACC,KAAK,CAACC,QAAQ;EAC5B,CAAC;EAAA,OAAAG,oBAAA;AAAA,EANuCF,KAAK,CAACC,SAAS","ignoreList":[]}

View File

@ -1,13 +1,13 @@
// Compile this with Babel. // Compile this with Babel.
// babel --config-file ./babel.config.json BabelClasses.js --out-file BabelClasses-compiled.js --source-maps // babel --config-file ./babel.config.json BabelClasses.js --out-file BabelClasses-compiled.js --source-maps
class BabelClass extends React.Component { export class BabelClass extends React.Component {
render() { render() {
return this.props.children; return this.props.children;
} }
} }
class BabelClassWithFields extends React.Component { export class BabelClassWithFields extends React.Component {
// These compile to defineProperty which can break some interception techniques. // These compile to defineProperty which can break some interception techniques.
props; props;
state = {}; state = {};

View File

@ -1,25 +1,25 @@
// Example // Example
const Throw = React.lazy(() => { export const Throw = React.lazy(() => {
throw new Error('Example'); throw new Error('Example');
}); });
const Component = React.memo(function Component({children}) { export const Component = React.memo(function Component({children}) {
return children; return children;
}); });
function DisplayName({children}) { export function DisplayName({children}) {
return children; return children;
} }
DisplayName.displayName = 'Custom Name'; DisplayName.displayName = 'Custom Name';
class NativeClass extends React.Component { export class NativeClass extends React.Component {
render() { render() {
return this.props.children; return this.props.children;
} }
} }
class FrozenClass extends React.Component { export class FrozenClass extends React.Component {
constructor() { constructor() {
super(); super();
} }

View File

@ -1,4 +1,11 @@
// Example import {BabelClass, BabelClassWithFields} from './BabelClasses-compiled.js';
import {
Throw,
Component,
DisplayName,
NativeClass,
FrozenClass,
} from './Components.js';
const x = React.createElement; const x = React.createElement;
@ -29,7 +36,7 @@ class ErrorBoundary extends React.Component {
} }
} }
function Example() { export default function Example() {
let state = React.useState(false); let state = React.useState(false);
return x( return x(
ErrorBoundary, ErrorBoundary,
@ -38,25 +45,21 @@ function Example() {
DisplayName, DisplayName,
null, null,
x( x(
React.unstable_SuspenseList, NativeClass,
null, null,
x( x(
NativeClass, FrozenClass,
null, null,
x( x(
FrozenClass, BabelClass,
null, null,
x( x(
BabelClass, BabelClassWithFields,
null, null,
x( x(
BabelClassWithFields, React.Suspense,
null, null,
x( x('div', null, x(Component, null, x(Throw)))
React.Suspense,
null,
x('div', null, x(Component, null, x(Throw)))
)
) )
) )
) )

View File

@ -25,14 +25,19 @@
If you checked out the source from GitHub make sure to run <code>npm run build</code>. If you checked out the source from GitHub make sure to run <code>npm run build</code>.
</p> </p>
</div> </div>
<script src="../../build/oss-experimental/react/umd/react.production.min.js"></script> <script type="module">
<script src="../../build/oss-experimental/react-dom/umd/react-dom.production.min.js"></script> import React from 'https://esm.sh/react@canary/?dev';
<script src="./Components.js"></script> import ReactDOMClient from 'https://esm.sh/react-dom@canary/client?dev';
<script src="./BabelClasses-compiled.js"></script>
<script src="./Example.js"></script> window.React = React;
<script> window.ReactDOMClient = ReactDOMClient;
const container = document.getElementById("container");
ReactDOM.render(React.createElement(Example), container); import("./Example.js").then(({ default: Example }) => {
console.log("Example", Example)
const container = document.getElementById("container");
const root = ReactDOMClient.createRoot(container);
root.render(React.createElement(Example));
});
</script> </script>
<h3>The above stack should look something like this:</h3> <h3>The above stack should look something like this:</h3>
<pre> <pre>
@ -44,7 +49,6 @@
at BabelClass (/stacks/BabelClass-compiled.js:13:29) at BabelClass (/stacks/BabelClass-compiled.js:13:29)
at FrozenClass (/stacks/Components.js:22:1) at FrozenClass (/stacks/Components.js:22:1)
at NativeClass (/stacks/Component.js:16:1) at NativeClass (/stacks/Component.js:16:1)
at SuspenseList
at Custom Name (/stacks/Component.js:11:1) at Custom Name (/stacks/Component.js:11:1)
at ErrorBoundary (/stacks/Example.js:5:1) at ErrorBoundary (/stacks/Example.js:5:1)
at Example (/stacks/Example.js:32:1)</pre> at Example (/stacks/Example.js:32:1)</pre>

View File

@ -0,0 +1,13 @@
{
"scripts": {
"build": "babel --config-file ./babel.config.json BabelClasses.js -o BabelClasses-compiled.js --source-maps",
"dev": "http-server ."
},
"dependencies": {
"http-server": "^14.1.1"
},
"devDependencies": {
"@babel/cli": "^7.24.1",
"@babel/core": "^7.24.4"
}
}

918
fixtures/stacks/yarn.lock Normal file
View File

@ -0,0 +1,918 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@ampproject/remapping@^2.2.0":
version "2.3.0"
resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4"
integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
dependencies:
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.24"
"@babel/cli@^7.24.1":
version "7.24.1"
resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.24.1.tgz#2e11e071e32fe82850b4fe514f56b9c9e1c44911"
integrity sha512-HbmrtxyFUr34LwAlV9jS+sSIjUp4FpdtIMGwgufY3AsxrIfsh/HxlMTywsONAZsU0RMYbZtbZFpUCrSGs7o0EA==
dependencies:
"@jridgewell/trace-mapping" "^0.3.25"
commander "^4.0.1"
convert-source-map "^2.0.0"
fs-readdir-recursive "^1.1.0"
glob "^7.2.0"
make-dir "^2.1.0"
slash "^2.0.0"
optionalDependencies:
"@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3"
chokidar "^3.4.0"
"@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2":
version "7.24.2"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae"
integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==
dependencies:
"@babel/highlight" "^7.24.2"
picocolors "^1.0.0"
"@babel/compat-data@^7.23.5":
version "7.24.4"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a"
integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==
"@babel/core@^7.24.4":
version "7.24.4"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.4.tgz#1f758428e88e0d8c563874741bc4ffc4f71a4717"
integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==
dependencies:
"@ampproject/remapping" "^2.2.0"
"@babel/code-frame" "^7.24.2"
"@babel/generator" "^7.24.4"
"@babel/helper-compilation-targets" "^7.23.6"
"@babel/helper-module-transforms" "^7.23.3"
"@babel/helpers" "^7.24.4"
"@babel/parser" "^7.24.4"
"@babel/template" "^7.24.0"
"@babel/traverse" "^7.24.1"
"@babel/types" "^7.24.0"
convert-source-map "^2.0.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
json5 "^2.2.3"
semver "^6.3.1"
"@babel/generator@^7.24.1", "@babel/generator@^7.24.4":
version "7.24.4"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.4.tgz#1fc55532b88adf952025d5d2d1e71f946cb1c498"
integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==
dependencies:
"@babel/types" "^7.24.0"
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.25"
jsesc "^2.5.1"
"@babel/helper-compilation-targets@^7.23.6":
version "7.23.6"
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991"
integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==
dependencies:
"@babel/compat-data" "^7.23.5"
"@babel/helper-validator-option" "^7.23.5"
browserslist "^4.22.2"
lru-cache "^5.1.1"
semver "^6.3.1"
"@babel/helper-environment-visitor@^7.22.20":
version "7.22.20"
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167"
integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==
"@babel/helper-function-name@^7.23.0":
version "7.23.0"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759"
integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==
dependencies:
"@babel/template" "^7.22.15"
"@babel/types" "^7.23.0"
"@babel/helper-hoist-variables@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb"
integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==
dependencies:
"@babel/types" "^7.22.5"
"@babel/helper-module-imports@^7.22.15":
version "7.24.3"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128"
integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==
dependencies:
"@babel/types" "^7.24.0"
"@babel/helper-module-transforms@^7.23.3":
version "7.23.3"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1"
integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==
dependencies:
"@babel/helper-environment-visitor" "^7.22.20"
"@babel/helper-module-imports" "^7.22.15"
"@babel/helper-simple-access" "^7.22.5"
"@babel/helper-split-export-declaration" "^7.22.6"
"@babel/helper-validator-identifier" "^7.22.20"
"@babel/helper-simple-access@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de"
integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==
dependencies:
"@babel/types" "^7.22.5"
"@babel/helper-split-export-declaration@^7.22.6":
version "7.22.6"
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c"
integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==
dependencies:
"@babel/types" "^7.22.5"
"@babel/helper-string-parser@^7.23.4":
version "7.24.1"
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e"
integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==
"@babel/helper-validator-identifier@^7.22.20":
version "7.22.20"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0"
integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
"@babel/helper-validator-option@^7.23.5":
version "7.23.5"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307"
integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==
"@babel/helpers@^7.24.4":
version "7.24.4"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.4.tgz#dc00907fd0d95da74563c142ef4cd21f2cb856b6"
integrity sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==
dependencies:
"@babel/template" "^7.24.0"
"@babel/traverse" "^7.24.1"
"@babel/types" "^7.24.0"
"@babel/highlight@^7.24.2":
version "7.24.2"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26"
integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==
dependencies:
"@babel/helper-validator-identifier" "^7.22.20"
chalk "^2.4.2"
js-tokens "^4.0.0"
picocolors "^1.0.0"
"@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4":
version "7.24.4"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88"
integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==
"@babel/template@^7.22.15", "@babel/template@^7.24.0":
version "7.24.0"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50"
integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==
dependencies:
"@babel/code-frame" "^7.23.5"
"@babel/parser" "^7.24.0"
"@babel/types" "^7.24.0"
"@babel/traverse@^7.24.1":
version "7.24.1"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c"
integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==
dependencies:
"@babel/code-frame" "^7.24.1"
"@babel/generator" "^7.24.1"
"@babel/helper-environment-visitor" "^7.22.20"
"@babel/helper-function-name" "^7.23.0"
"@babel/helper-hoist-variables" "^7.22.5"
"@babel/helper-split-export-declaration" "^7.22.6"
"@babel/parser" "^7.24.1"
"@babel/types" "^7.24.0"
debug "^4.3.1"
globals "^11.1.0"
"@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0":
version "7.24.0"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf"
integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==
dependencies:
"@babel/helper-string-parser" "^7.23.4"
"@babel/helper-validator-identifier" "^7.22.20"
to-fast-properties "^2.0.0"
"@jridgewell/gen-mapping@^0.3.5":
version "0.3.5"
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36"
integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==
dependencies:
"@jridgewell/set-array" "^1.2.1"
"@jridgewell/sourcemap-codec" "^1.4.10"
"@jridgewell/trace-mapping" "^0.3.24"
"@jridgewell/resolve-uri@^3.1.0":
version "3.1.2"
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
"@jridgewell/set-array@^1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
version "1.4.15"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
version "0.3.25"
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
dependencies:
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3":
version "2.1.8-no-fsevents.3"
resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b"
integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==
ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
dependencies:
color-convert "^1.9.0"
ansi-styles@^4.1.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
anymatch@~3.1.2:
version "3.1.3"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
async@^2.6.4:
version "2.6.4"
resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221"
integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==
dependencies:
lodash "^4.17.14"
balanced-match@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
basic-auth@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a"
integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==
dependencies:
safe-buffer "5.1.2"
binary-extensions@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
braces@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
dependencies:
fill-range "^7.0.1"
browserslist@^4.22.2:
version "4.23.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab"
integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==
dependencies:
caniuse-lite "^1.0.30001587"
electron-to-chromium "^1.4.668"
node-releases "^2.0.14"
update-browserslist-db "^1.0.13"
call-bind@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
dependencies:
es-define-property "^1.0.0"
es-errors "^1.3.0"
function-bind "^1.1.2"
get-intrinsic "^1.2.4"
set-function-length "^1.2.1"
caniuse-lite@^1.0.30001587:
version "1.0.30001610"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001610.tgz#2f44ed6e21d359e914271ae35b68903632628ccf"
integrity sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==
chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
dependencies:
ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
chalk@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chokidar@^3.4.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
glob-parent "~5.1.2"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.6.0"
optionalDependencies:
fsevents "~2.3.2"
color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
dependencies:
color-name "1.1.3"
color-convert@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
dependencies:
color-name "~1.1.4"
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
commander@^4.0.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
convert-source-map@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
corser@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87"
integrity sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==
debug@^3.2.7:
version "3.2.7"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
dependencies:
ms "^2.1.1"
debug@^4.1.0, debug@^4.3.1:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
define-data-property@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
dependencies:
es-define-property "^1.0.0"
es-errors "^1.3.0"
gopd "^1.0.1"
electron-to-chromium@^1.4.668:
version "1.4.736"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.736.tgz#ecb4348f4d5c70fb1e31c347e5bad6b751066416"
integrity sha512-Rer6wc3ynLelKNM4lOCg7/zPQj8tPOCB2hzD32PX9wd3hgRRi9MxEbmkFCokzcEhRVMiOVLjnL9ig9cefJ+6+Q==
es-define-property@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
dependencies:
get-intrinsic "^1.2.4"
es-errors@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
escalade@^3.1.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
eventemitter3@^4.0.0:
version "4.0.7"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
dependencies:
to-regex-range "^5.0.1"
follow-redirects@^1.0.0:
version "1.15.6"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b"
integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
fs-readdir-recursive@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27"
integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
function-bind@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
gensync@^1.0.0-beta.2:
version "1.0.0-beta.2"
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
get-intrinsic@^1.1.3, get-intrinsic@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
dependencies:
es-errors "^1.3.0"
function-bind "^1.1.2"
has-proto "^1.0.1"
has-symbols "^1.0.3"
hasown "^2.0.0"
glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob@^7.2.0:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.1.1"
once "^1.3.0"
path-is-absolute "^1.0.0"
globals@^11.1.0:
version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
gopd@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
dependencies:
get-intrinsic "^1.1.3"
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
has-property-descriptors@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
dependencies:
es-define-property "^1.0.0"
has-proto@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd"
integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
has-symbols@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
hasown@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
dependencies:
function-bind "^1.1.2"
he@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
html-encoding-sniffer@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9"
integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==
dependencies:
whatwg-encoding "^2.0.0"
http-proxy@^1.18.1:
version "1.18.1"
resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
dependencies:
eventemitter3 "^4.0.0"
follow-redirects "^1.0.0"
requires-port "^1.0.0"
http-server@^14.1.1:
version "14.1.1"
resolved "https://registry.yarnpkg.com/http-server/-/http-server-14.1.1.tgz#d60fbb37d7c2fdff0f0fbff0d0ee6670bd285e2e"
integrity sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==
dependencies:
basic-auth "^2.0.1"
chalk "^4.1.2"
corser "^2.0.1"
he "^1.2.0"
html-encoding-sniffer "^3.0.0"
http-proxy "^1.18.1"
mime "^1.6.0"
minimist "^1.2.6"
opener "^1.5.1"
portfinder "^1.0.28"
secure-compare "3.0.1"
union "~0.5.0"
url-join "^4.0.1"
iconv-lite@0.6.3:
version "0.6.3"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
dependencies:
once "^1.3.0"
wrappy "1"
inherits@2:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
dependencies:
binary-extensions "^2.0.0"
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
is-extglob "^2.1.1"
is-number@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
jsesc@^2.5.1:
version "2.5.2"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
json5@^2.2.3:
version "2.2.3"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
lodash@^4.17.14:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
lru-cache@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
dependencies:
yallist "^3.0.2"
make-dir@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
dependencies:
pify "^4.0.1"
semver "^5.6.0"
mime@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
minimatch@^3.1.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
minimist@^1.2.6:
version "1.2.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
mkdirp@^0.5.6:
version "0.5.6"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
dependencies:
minimist "^1.2.6"
ms@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
ms@^2.1.1:
version "2.1.3"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
node-releases@^2.0.14:
version "2.0.14"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b"
integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
object-inspect@^1.13.1:
version "1.13.1"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2"
integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
wrappy "1"
opener@^1.5.1:
version "1.5.2"
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
picocolors@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
picomatch@^2.0.4, picomatch@^2.2.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
pify@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
portfinder@^1.0.28:
version "1.0.32"
resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81"
integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==
dependencies:
async "^2.6.4"
debug "^3.2.7"
mkdirp "^0.5.6"
qs@^6.4.0:
version "6.12.1"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.1.tgz#39422111ca7cbdb70425541cba20c7d7b216599a"
integrity sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==
dependencies:
side-channel "^1.0.6"
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
dependencies:
picomatch "^2.2.1"
requires-port@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
safe-buffer@5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
"safer-buffer@>= 2.1.2 < 3.0.0":
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
secure-compare@3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3"
integrity sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==
semver@^5.6.0:
version "5.7.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
semver@^6.3.1:
version "6.3.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
set-function-length@^1.2.1:
version "1.2.2"
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
dependencies:
define-data-property "^1.1.4"
es-errors "^1.3.0"
function-bind "^1.1.2"
get-intrinsic "^1.2.4"
gopd "^1.0.1"
has-property-descriptors "^1.0.2"
side-channel@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
dependencies:
call-bind "^1.0.7"
es-errors "^1.3.0"
get-intrinsic "^1.2.4"
object-inspect "^1.13.1"
slash@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
dependencies:
has-flag "^3.0.0"
supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
has-flag "^4.0.0"
to-fast-properties@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
dependencies:
is-number "^7.0.0"
union@~0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075"
integrity sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==
dependencies:
qs "^6.4.0"
update-browserslist-db@^1.0.13:
version "1.0.13"
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4"
integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==
dependencies:
escalade "^3.1.1"
picocolors "^1.0.0"
url-join@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7"
integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==
whatwg-encoding@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53"
integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==
dependencies:
iconv-lite "0.6.3"
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
yallist@^3.0.2:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==

View File

@ -1,7 +1,7 @@
[build] [build]
base = "" base = ""
publish = "fixtures/dom/build" publish = "fixtures/dom/build"
command = "yarn build --type=UMD_DEV && cd fixtures/dom/ && yarn && yarn predev && yarn build" command = "yarn build --type=UMD_DEV && cd fixtures/dom/ && yarn && yarn build"
[[redirects]] [[redirects]]
from = "/*" from = "/*"

View File

@ -121,7 +121,7 @@
"test-www": "node ./scripts/jest/jest-cli.js --release-channel=www-modern", "test-www": "node ./scripts/jest/jest-cli.js --release-channel=www-modern",
"test-classic": "node ./scripts/jest/jest-cli.js --release-channel=www-classic", "test-classic": "node ./scripts/jest/jest-cli.js --release-channel=www-classic",
"test-build-devtools": "node ./scripts/jest/jest-cli.js --build --project devtools --release-channel=experimental", "test-build-devtools": "node ./scripts/jest/jest-cli.js --build --project devtools --release-channel=experimental",
"test-dom-fixture": "cd fixtures/dom && yarn && yarn predev && yarn test", "test-dom-fixture": "cd fixtures/dom && yarn && yarn test",
"flow": "node ./scripts/tasks/flow.js", "flow": "node ./scripts/tasks/flow.js",
"flow-ci": "node ./scripts/tasks/flow-ci.js", "flow-ci": "node ./scripts/tasks/flow-ci.js",
"prettier": "node ./scripts/prettier/index.js write-changed", "prettier": "node ./scripts/prettier/index.js write-changed",

View File

@ -34,7 +34,6 @@
"README.md", "README.md",
"index.js", "index.js",
"cjs/", "cjs/",
"umd/",
"Circle.js", "Circle.js",
"Rectangle.js", "Rectangle.js",
"Wedge.js" "Wedge.js"

View File

@ -12,8 +12,7 @@
"LICENSE", "LICENSE",
"README.md", "README.md",
"index.js", "index.js",
"cjs/", "cjs/"
"umd/"
], ],
"peerDependencies": { "peerDependencies": {
"react": "^17.0.0" "react": "^17.0.0"

View File

@ -27,13 +27,13 @@ export function createRoot(
options?: CreateRootOptions, options?: CreateRootOptions,
): RootType { ): RootType {
if (__DEV__) { if (__DEV__) {
(Internals: any).usingClientEntryPoint = true; Internals.usingClientEntryPoint = true;
} }
try { try {
return createRootImpl(container, options); return createRootImpl(container, options);
} finally { } finally {
if (__DEV__) { if (__DEV__) {
(Internals: any).usingClientEntryPoint = false; Internals.usingClientEntryPoint = false;
} }
} }
} }
@ -44,13 +44,13 @@ export function hydrateRoot(
options?: HydrateRootOptions, options?: HydrateRootOptions,
): RootType { ): RootType {
if (__DEV__) { if (__DEV__) {
(Internals: any).usingClientEntryPoint = true; Internals.usingClientEntryPoint = true;
} }
try { try {
return hydrateRootImpl(container, children, options); return hydrateRootImpl(container, children, options);
} finally { } finally {
if (__DEV__) { if (__DEV__) {
(Internals: any).usingClientEntryPoint = false; Internals.usingClientEntryPoint = false;
} }
} }
} }

View File

@ -47,8 +47,7 @@
"unstable_testing.js", "unstable_testing.js",
"unstable_testing.react-server.js", "unstable_testing.react-server.js",
"unstable_server-external-runtime.js", "unstable_server-external-runtime.js",
"cjs/", "cjs/"
"umd/"
], ],
"exports": { "exports": {
".": { ".": {

View File

@ -89,7 +89,7 @@ function createRoot(
options?: CreateRootOptions, options?: CreateRootOptions,
): RootType { ): RootType {
if (__DEV__) { if (__DEV__) {
if (!(Internals: any).usingClientEntryPoint && !__UMD__) { if (!Internals.usingClientEntryPoint) {
console.error( console.error(
'You are importing createRoot from "react-dom" which is not supported. ' + 'You are importing createRoot from "react-dom" which is not supported. ' +
'You should instead import it from "react-dom/client".', 'You should instead import it from "react-dom/client".',
@ -105,7 +105,7 @@ function hydrateRoot(
options?: HydrateRootOptions, options?: HydrateRootOptions,
): RootType { ): RootType {
if (__DEV__) { if (__DEV__) {
if (!(Internals: any).usingClientEntryPoint && !__UMD__) { if (!Internals.usingClientEntryPoint) {
console.error( console.error(
'You are importing hydrateRoot from "react-dom" which is not supported. ' + 'You are importing hydrateRoot from "react-dom" which is not supported. ' +
'You should instead import it from "react-dom/client".', 'You should instead import it from "react-dom/client".',

View File

@ -21,7 +21,6 @@
"LICENSE", "LICENSE",
"README.md", "README.md",
"index.js", "index.js",
"cjs/", "cjs/"
"umd/"
] ]
} }

View File

@ -13,8 +13,7 @@
"README.md", "README.md",
"babel.js", "babel.js",
"runtime.js", "runtime.js",
"cjs/", "cjs/"
"umd/"
], ],
"main": "runtime.js", "main": "runtime.js",
"exports": { "exports": {

View File

@ -24,7 +24,6 @@
"server.node.unbundled.js", "server.node.unbundled.js",
"node-register.js", "node-register.js",
"cjs/", "cjs/",
"umd/",
"esm/" "esm/"
], ],
"exports": { "exports": {

View File

@ -25,7 +25,6 @@
"server.node.unbundled.js", "server.node.unbundled.js",
"node-register.js", "node-register.js",
"cjs/", "cjs/",
"umd/",
"esm/" "esm/"
], ],
"exports": { "exports": {

View File

@ -30,7 +30,6 @@
"README.md", "README.md",
"index.js", "index.js",
"shallow.js", "shallow.js",
"cjs/", "cjs/"
"umd/"
] ]
} }

View File

@ -13,7 +13,6 @@
"README.md", "README.md",
"index.js", "index.js",
"cjs/", "cjs/",
"umd/",
"jsx-runtime.js", "jsx-runtime.js",
"jsx-runtime.react-server.js", "jsx-runtime.react-server.js",
"jsx-dev-runtime.js", "jsx-dev-runtime.js",

View File

@ -1,101 +0,0 @@
/**
* 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
*/
import type {Dispatcher} from 'react-reconciler/src/ReactInternalTypes';
import type {CacheDispatcher} from 'react-reconciler/src/ReactInternalTypes';
import type {BatchConfigTransition} from 'react-reconciler/src/ReactFiberTracingMarkerComponent';
import type {Fiber} from 'react-reconciler/src/ReactInternalTypes';
import * as Scheduler from 'scheduler';
import {disableStringRefs} from 'shared/ReactFeatureFlags';
export type SharedStateClient = {
H: null | Dispatcher, // ReactCurrentDispatcher for Hooks
C: null | CacheDispatcher, // ReactCurrentCache for Cache
T: null | BatchConfigTransition, // ReactCurrentBatchConfig for Transitions
// DEV-only-ish
owner?: null | Fiber, // ReactCurrentOwner is Fiber on the Client, null in Fizz. Flight uses SharedStateServer.
// ReactCurrentActQueue
actQueue?: null | Array<RendererTask>,
// Used to reproduce behavior of `batchedUpdates` in legacy mode.
isBatchingLegacy?: boolean,
didScheduleLegacyUpdate?: boolean,
// Tracks whether something called `use` during the current batch of work.
// Determines whether we should yield to microtasks to unwrap already resolved
// promises without suspending.
didUsePromise?: boolean,
// Track first uncaught error within this act
thrownErrors?: Array<mixed>,
// ReactDebugCurrentFrame
setExtraStackFrame?: (stack: null | string) => void,
getCurrentStack?: null | (() => string),
getStackAddendum?: () => string,
Scheduler: any,
};
export type RendererTask = boolean => RendererTask | null;
const ReactSharedInternals: SharedStateClient = {
H: null,
C: null,
T: null,
// Re-export the schedule API(s) for UMD bundles.
// This avoids introducing a dependency on a new UMD global in a minor update,
// Since that would be a breaking change (e.g. for all existing CodeSandboxes).
// This re-export is only required for UMD bundles;
// CJS bundles use the shared NPM package.
Scheduler,
};
if (__DEV__ || !disableStringRefs) {
ReactSharedInternals.owner = null;
}
if (__DEV__) {
ReactSharedInternals.actQueue = null;
ReactSharedInternals.isBatchingLegacy = false;
ReactSharedInternals.didScheduleLegacyUpdate = false;
ReactSharedInternals.didUsePromise = false;
ReactSharedInternals.thrownErrors = [];
let currentExtraStackFrame = (null: null | string);
ReactSharedInternals.setExtraStackFrame = function (stack: null | string) {
currentExtraStackFrame = stack;
};
// Stack implementation injected by the current renderer.
ReactSharedInternals.getCurrentStack = (null: null | (() => string));
ReactSharedInternals.getStackAddendum = function (): string {
let stack = '';
// Add an extra top frame while an element is being validated
if (currentExtraStackFrame) {
stack += currentExtraStackFrame;
}
// Delegate to the injected renderer-specific implementation
const impl = ReactSharedInternals.getCurrentStack;
if (impl) {
stack += impl() || '';
}
return stack;
};
}
export default ReactSharedInternals;

View File

@ -22,7 +22,6 @@
"index.native.js", "index.native.js",
"unstable_mock.js", "unstable_mock.js",
"unstable_post_task.js", "unstable_post_task.js",
"cjs/", "cjs/"
"umd/"
] ]
} }

View File

@ -1,54 +0,0 @@
/**
* 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.
*
* @jest-environment node
*/
'use strict';
class MockMessageChannel {
constructor() {
this.port1 = jest.fn();
this.port2 = jest.fn();
}
}
describe('Scheduling UMD bundle', () => {
beforeEach(() => {
// Fool SECRET_INTERNALS object into including UMD forwarding methods.
global.__UMD__ = true;
jest.resetModules();
jest.unmock('scheduler');
global.MessageChannel = MockMessageChannel;
});
afterEach(() => {
global.MessageChannel = undefined;
});
function validateForwardedAPIs(api, forwardedAPIs) {
const apiKeys = Object.keys(api).sort();
forwardedAPIs.forEach(forwardedAPI => {
expect(Object.keys(forwardedAPI).sort()).toEqual(apiKeys);
});
}
it('should define the same scheduling API', () => {
const api = require('../../index');
const umdAPIDev = require('../../npm/umd/scheduler.development');
const umdAPIProd = require('../../npm/umd/scheduler.production.min');
const umdAPIProfiling = require('../../npm/umd/scheduler.profiling.min');
const secretAPI =
require('react/src/forks/ReactSharedInternalsClient.umd').default;
validateForwardedAPIs(api, [
umdAPIDev,
umdAPIProd,
umdAPIProfiling,
secretAPI.Scheduler,
]);
});
});

View File

@ -1,63 +0,0 @@
/**
* 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
*/
import * as React from 'react';
const ReactInternals =
React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
const {
unstable_cancelCallback,
unstable_now,
unstable_scheduleCallback,
unstable_shouldYield,
unstable_requestPaint,
unstable_getFirstCallbackNode,
unstable_runWithPriority,
unstable_next,
unstable_continueExecution,
unstable_pauseExecution,
unstable_getCurrentPriorityLevel,
unstable_ImmediatePriority,
unstable_UserBlockingPriority,
unstable_NormalPriority,
unstable_LowPriority,
unstable_IdlePriority,
unstable_forceFrameRate,
// this doesn't actually exist on the scheduler, but it *does*
// on scheduler/unstable_mock, which we'll need inside act()
// and for internal testing
unstable_flushAllWithoutAsserting,
log,
unstable_setDisableYieldValue,
} = ((ReactInternals: any).Scheduler: any);
export {
unstable_cancelCallback,
unstable_now,
unstable_scheduleCallback,
unstable_shouldYield,
unstable_requestPaint,
unstable_getFirstCallbackNode,
unstable_runWithPriority,
unstable_next,
unstable_continueExecution,
unstable_pauseExecution,
unstable_getCurrentPriorityLevel,
unstable_ImmediatePriority,
unstable_UserBlockingPriority,
unstable_NormalPriority,
unstable_LowPriority,
unstable_IdlePriority,
unstable_forceFrameRate,
unstable_flushAllWithoutAsserting,
log,
unstable_setDisableYieldValue,
};

View File

@ -10,7 +10,6 @@
/* eslint-disable */ /* eslint-disable */
declare const __PROFILE__: boolean; declare const __PROFILE__: boolean;
declare const __UMD__: boolean;
declare const __EXPERIMENTAL__: boolean; declare const __EXPERIMENTAL__: boolean;
declare const __VARIANT__: boolean; declare const __VARIANT__: boolean;

View File

@ -8,7 +8,6 @@ global.__DEV__ = NODE_ENV === 'development';
global.__EXTENSION__ = false; global.__EXTENSION__ = false;
global.__TEST__ = NODE_ENV === 'test'; global.__TEST__ = NODE_ENV === 'test';
global.__PROFILE__ = NODE_ENV === 'development'; global.__PROFILE__ = NODE_ENV === 'development';
global.__UMD__ = false;
const RELEASE_CHANNEL = process.env.RELEASE_CHANNEL; const RELEASE_CHANNEL = process.env.RELEASE_CHANNEL;

View File

@ -3,7 +3,6 @@
const rollup = require('rollup'); const rollup = require('rollup');
const babel = require('@rollup/plugin-babel').babel; const babel = require('@rollup/plugin-babel').babel;
const closure = require('./plugins/closure-plugin'); const closure = require('./plugins/closure-plugin');
const commonjs = require('@rollup/plugin-commonjs');
const flowRemoveTypes = require('flow-remove-types'); const flowRemoveTypes = require('flow-remove-types');
const prettier = require('rollup-plugin-prettier'); const prettier = require('rollup-plugin-prettier');
const replace = require('@rollup/plugin-replace'); const replace = require('@rollup/plugin-replace');
@ -48,9 +47,6 @@ const {
NODE_ES2015, NODE_ES2015,
ESM_DEV, ESM_DEV,
ESM_PROD, ESM_PROD,
UMD_DEV,
UMD_PROD,
UMD_PROFILING,
NODE_DEV, NODE_DEV,
NODE_PROD, NODE_PROD,
NODE_PROFILING, NODE_PROFILING,
@ -228,10 +224,6 @@ function getRollupOutputOptions(
function getFormat(bundleType) { function getFormat(bundleType) {
switch (bundleType) { switch (bundleType) {
case UMD_DEV:
case UMD_PROD:
case UMD_PROFILING:
return `umd`;
case NODE_ES2015: case NODE_ES2015:
case NODE_DEV: case NODE_DEV:
case NODE_PROD: case NODE_PROD:
@ -261,7 +253,6 @@ function isProductionBundleType(bundleType) {
case NODE_ES2015: case NODE_ES2015:
return true; return true;
case ESM_DEV: case ESM_DEV:
case UMD_DEV:
case NODE_DEV: case NODE_DEV:
case BUN_DEV: case BUN_DEV:
case FB_WWW_DEV: case FB_WWW_DEV:
@ -269,10 +260,8 @@ function isProductionBundleType(bundleType) {
case RN_FB_DEV: case RN_FB_DEV:
return false; return false;
case ESM_PROD: case ESM_PROD:
case UMD_PROD:
case NODE_PROD: case NODE_PROD:
case BUN_PROD: case BUN_PROD:
case UMD_PROFILING:
case NODE_PROFILING: case NODE_PROFILING:
case FB_WWW_PROD: case FB_WWW_PROD:
case FB_WWW_PROFILING: case FB_WWW_PROFILING:
@ -302,15 +291,12 @@ function isProfilingBundleType(bundleType) {
case RN_OSS_PROD: case RN_OSS_PROD:
case ESM_DEV: case ESM_DEV:
case ESM_PROD: case ESM_PROD:
case UMD_DEV:
case UMD_PROD:
case BROWSER_SCRIPT: case BROWSER_SCRIPT:
return false; return false;
case FB_WWW_PROFILING: case FB_WWW_PROFILING:
case NODE_PROFILING: case NODE_PROFILING:
case RN_FB_PROFILING: case RN_FB_PROFILING:
case RN_OSS_PROFILING: case RN_OSS_PROFILING:
case UMD_PROFILING:
return true; return true;
default: default:
throw new Error(`Unknown type: ${bundleType}`); throw new Error(`Unknown type: ${bundleType}`);
@ -318,10 +304,6 @@ function isProfilingBundleType(bundleType) {
} }
function getBundleTypeFlags(bundleType) { function getBundleTypeFlags(bundleType) {
const isUMDBundle =
bundleType === UMD_DEV ||
bundleType === UMD_PROD ||
bundleType === UMD_PROFILING;
const isFBWWWBundle = const isFBWWWBundle =
bundleType === FB_WWW_DEV || bundleType === FB_WWW_DEV ||
bundleType === FB_WWW_PROD || bundleType === FB_WWW_PROD ||
@ -341,17 +323,10 @@ function getBundleTypeFlags(bundleType) {
const shouldStayReadable = isFBWWWBundle || isRNBundle || forcePrettyOutput; const shouldStayReadable = isFBWWWBundle || isRNBundle || forcePrettyOutput;
const shouldBundleDependencies =
bundleType === UMD_DEV ||
bundleType === UMD_PROD ||
bundleType === UMD_PROFILING;
return { return {
isUMDBundle,
isFBWWWBundle, isFBWWWBundle,
isRNBundle, isRNBundle,
isFBRNBundle, isFBRNBundle,
shouldBundleDependencies,
shouldStayReadable, shouldStayReadable,
}; };
} }
@ -387,7 +362,7 @@ function getPlugins(
const isProduction = isProductionBundleType(bundleType); const isProduction = isProductionBundleType(bundleType);
const isProfiling = isProfilingBundleType(bundleType); const isProfiling = isProfilingBundleType(bundleType);
const {isUMDBundle, shouldStayReadable} = getBundleTypeFlags(bundleType); const {shouldStayReadable} = getBundleTypeFlags(bundleType);
const needsMinifiedByClosure = isProduction && bundleType !== ESM_PROD; const needsMinifiedByClosure = isProduction && bundleType !== ESM_PROD;
@ -403,14 +378,12 @@ function getPlugins(
// Generate sourcemaps for true "production" build artifacts // Generate sourcemaps for true "production" build artifacts
// that will be used by bundlers, such as `react-dom.production.min.js`. // that will be used by bundlers, such as `react-dom.production.min.js`.
// Also include profiling builds as well. // Also include profiling builds as well.
// UMD builds are rarely used and not worth having sourcemaps.
const needsSourcemaps = const needsSourcemaps =
needsMinifiedByClosure && needsMinifiedByClosure &&
// This will only exclude `unstable_server-external-runtime.js` artifact // This will only exclude `unstable_server-external-runtime.js` artifact
// To start generating sourcemaps for it, we should stop manually copying it to `facebook-www` // To start generating sourcemaps for it, we should stop manually copying it to `facebook-www`
// and force `react-dom` to include .map files in npm-package at the root level // and force `react-dom` to include .map files in npm-package at the root level
bundleType !== BROWSER_SCRIPT && bundleType !== BROWSER_SCRIPT &&
!isUMDBundle &&
!sourcemapPackageExcludes.includes(entry) && !sourcemapPackageExcludes.includes(entry) &&
!shouldStayReadable; !shouldStayReadable;
@ -463,17 +436,12 @@ function getPlugins(
values: { values: {
__DEV__: isProduction ? 'false' : 'true', __DEV__: isProduction ? 'false' : 'true',
__PROFILE__: isProfiling || !isProduction ? 'true' : 'false', __PROFILE__: isProfiling || !isProduction ? 'true' : 'false',
__UMD__: isUMDBundle ? 'true' : 'false',
'process.env.NODE_ENV': isProduction 'process.env.NODE_ENV': isProduction
? "'production'" ? "'production'"
: "'development'", : "'development'",
__EXPERIMENTAL__, __EXPERIMENTAL__,
}, },
}), }),
// The CommonJS plugin *only* exists to pull "art" into "react-art".
// I'm going to port "art" to ES modules to avoid this problem.
// Please don't enable this for anything else!
isUMDBundle && entry === 'react-art' && commonjs(),
{ {
name: 'top-level-definitions', name: 'top-level-definitions',
renderChunk(source) { renderChunk(source) {
@ -530,7 +498,7 @@ function getPlugins(
// Don't let it create global variables in the browser. // Don't let it create global variables in the browser.
// https://github.com/facebook/react/issues/10909 // https://github.com/facebook/react/issues/10909
assume_function_wrapper: !isUMDBundle, assume_function_wrapper: true,
renaming: !shouldStayReadable, renaming: !shouldStayReadable,
}, },
{needsSourcemaps} {needsSourcemaps}
@ -733,8 +701,7 @@ async function createBundle(bundle, bundleType) {
const format = getFormat(bundleType); const format = getFormat(bundleType);
const packageName = Packaging.getPackageName(bundle.entry); const packageName = Packaging.getPackageName(bundle.entry);
const {isFBWWWBundle, isFBRNBundle, shouldBundleDependencies} = const {isFBWWWBundle, isFBRNBundle} = getBundleTypeFlags(bundleType);
getBundleTypeFlags(bundleType);
let resolvedEntry = resolveEntryFork( let resolvedEntry = resolveEntryFork(
require.resolve(bundle.entry), require.resolve(bundle.entry),
@ -743,10 +710,9 @@ async function createBundle(bundle, bundleType) {
const peerGlobals = Modules.getPeerGlobals(bundle.externals, bundleType); const peerGlobals = Modules.getPeerGlobals(bundle.externals, bundleType);
let externals = Object.keys(peerGlobals); let externals = Object.keys(peerGlobals);
if (!shouldBundleDependencies) {
const deps = Modules.getDependencies(bundleType, bundle.entry); const deps = Modules.getDependencies(bundleType, bundle.entry);
externals = externals.concat(deps); externals = externals.concat(deps);
}
const importSideEffects = Modules.getImportSideEffects(); const importSideEffects = Modules.getImportSideEffects();
const pureExternalModules = Object.keys(importSideEffects).filter( const pureExternalModules = Object.keys(importSideEffects).filter(
@ -763,7 +729,7 @@ async function createBundle(bundle, bundleType) {
external(id) { external(id) {
const containsThisModule = pkg => id === pkg || id.startsWith(pkg + '/'); const containsThisModule = pkg => id === pkg || id.startsWith(pkg + '/');
const isProvidedByDependency = externals.some(containsThisModule); const isProvidedByDependency = externals.some(containsThisModule);
if (!shouldBundleDependencies && isProvidedByDependency) { if (isProvidedByDependency) {
if (id.indexOf('/src/') !== -1) { if (id.indexOf('/src/') !== -1) {
throw Error( throw Error(
'You are trying to import ' + 'You are trying to import ' +
@ -931,9 +897,6 @@ async function buildEverything() {
[bundle, NODE_ES2015], [bundle, NODE_ES2015],
[bundle, ESM_DEV], [bundle, ESM_DEV],
[bundle, ESM_PROD], [bundle, ESM_PROD],
[bundle, UMD_DEV],
[bundle, UMD_PROD],
[bundle, UMD_PROFILING],
[bundle, NODE_DEV], [bundle, NODE_DEV],
[bundle, NODE_PROD], [bundle, NODE_PROD],
[bundle, NODE_PROFILING], [bundle, NODE_PROFILING],

View File

@ -11,9 +11,6 @@ const bundleTypes = {
NODE_ES2015: 'NODE_ES2015', NODE_ES2015: 'NODE_ES2015',
ESM_DEV: 'ESM_DEV', ESM_DEV: 'ESM_DEV',
ESM_PROD: 'ESM_PROD', ESM_PROD: 'ESM_PROD',
UMD_DEV: 'UMD_DEV',
UMD_PROD: 'UMD_PROD',
UMD_PROFILING: 'UMD_PROFILING',
NODE_DEV: 'NODE_DEV', NODE_DEV: 'NODE_DEV',
NODE_PROD: 'NODE_PROD', NODE_PROD: 'NODE_PROD',
NODE_PROFILING: 'NODE_PROFILING', NODE_PROFILING: 'NODE_PROFILING',
@ -35,9 +32,6 @@ const {
NODE_ES2015, NODE_ES2015,
ESM_DEV, ESM_DEV,
ESM_PROD, ESM_PROD,
UMD_DEV,
UMD_PROD,
UMD_PROFILING,
NODE_DEV, NODE_DEV,
NODE_PROD, NODE_PROD,
NODE_PROFILING, NODE_PROFILING,
@ -72,9 +66,6 @@ const bundles = [
/******* Isomorphic *******/ /******* Isomorphic *******/
{ {
bundleTypes: [ bundleTypes: [
UMD_DEV,
UMD_PROD,
UMD_PROFILING,
NODE_DEV, NODE_DEV,
NODE_PROD, NODE_PROD,
FB_WWW_DEV, FB_WWW_DEV,
@ -173,9 +164,6 @@ const bundles = [
/******* React DOM *******/ /******* React DOM *******/
{ {
bundleTypes: [ bundleTypes: [
UMD_DEV,
UMD_PROD,
UMD_PROFILING,
NODE_DEV, NODE_DEV,
NODE_PROD, NODE_PROD,
NODE_PROFILING, NODE_PROFILING,
@ -207,7 +195,7 @@ const bundles = [
/******* Test Utils *******/ /******* Test Utils *******/
{ {
moduleType: RENDERER_UTILS, moduleType: RENDERER_UTILS,
bundleTypes: [FB_WWW_DEV, NODE_DEV, NODE_PROD, UMD_DEV, UMD_PROD], bundleTypes: [FB_WWW_DEV, NODE_DEV, NODE_PROD],
entry: 'react-dom/test-utils', entry: 'react-dom/test-utils',
global: 'ReactTestUtils', global: 'ReactTestUtils',
minifyWithProdErrorCodes: false, minifyWithProdErrorCodes: false,
@ -230,14 +218,7 @@ const bundles = [
/******* React DOM Server *******/ /******* React DOM Server *******/
{ {
bundleTypes: [ bundleTypes: [NODE_DEV, NODE_PROD, FB_WWW_DEV, FB_WWW_PROD],
UMD_DEV,
UMD_PROD,
NODE_DEV,
NODE_PROD,
FB_WWW_DEV,
FB_WWW_PROD,
],
moduleType: RENDERER, moduleType: RENDERER,
entry: 'react-dom/src/server/ReactDOMLegacyServerBrowser.js', entry: 'react-dom/src/server/ReactDOMLegacyServerBrowser.js',
name: 'react-dom-server-legacy.browser', name: 'react-dom-server-legacy.browser',
@ -270,7 +251,7 @@ const bundles = [
/******* React DOM Fizz Server *******/ /******* React DOM Fizz Server *******/
{ {
bundleTypes: [NODE_DEV, NODE_PROD, UMD_DEV, UMD_PROD], bundleTypes: [NODE_DEV, NODE_PROD],
moduleType: RENDERER, moduleType: RENDERER,
entry: 'react-dom/src/server/react-dom-server.browser.js', entry: 'react-dom/src/server/react-dom-server.browser.js',
name: 'react-dom-server.browser', name: 'react-dom-server.browser',
@ -339,7 +320,7 @@ const bundles = [
/******* React DOM Server Render Stub *******/ /******* React DOM Server Render Stub *******/
{ {
bundleTypes: [NODE_DEV, NODE_PROD, UMD_DEV, UMD_PROD], bundleTypes: [NODE_DEV, NODE_PROD],
moduleType: RENDERER, moduleType: RENDERER,
entry: 'react-dom/server-rendering-stub', entry: 'react-dom/server-rendering-stub',
name: 'react-dom-server-rendering-stub', name: 'react-dom-server-rendering-stub',
@ -351,7 +332,7 @@ const bundles = [
/******* React Server DOM Webpack Server *******/ /******* React Server DOM Webpack Server *******/
{ {
bundleTypes: [NODE_DEV, NODE_PROD, UMD_DEV, UMD_PROD], bundleTypes: [NODE_DEV, NODE_PROD],
moduleType: RENDERER, moduleType: RENDERER,
entry: 'react-server-dom-webpack/server.browser', entry: 'react-server-dom-webpack/server.browser',
condition: 'react-server', condition: 'react-server',
@ -393,7 +374,7 @@ const bundles = [
/******* React Server DOM Webpack Client *******/ /******* React Server DOM Webpack Client *******/
{ {
bundleTypes: [NODE_DEV, NODE_PROD, UMD_DEV, UMD_PROD], bundleTypes: [NODE_DEV, NODE_PROD],
moduleType: RENDERER, moduleType: RENDERER,
entry: 'react-server-dom-webpack/client.browser', entry: 'react-server-dom-webpack/client.browser',
global: 'ReactServerDOMClient', global: 'ReactServerDOMClient',
@ -467,7 +448,7 @@ const bundles = [
/******* React Server DOM Turbopack Server *******/ /******* React Server DOM Turbopack Server *******/
{ {
bundleTypes: [NODE_DEV, NODE_PROD, UMD_DEV, UMD_PROD], bundleTypes: [NODE_DEV, NODE_PROD],
moduleType: RENDERER, moduleType: RENDERER,
entry: 'react-server-dom-turbopack/server.browser', entry: 'react-server-dom-turbopack/server.browser',
condition: 'react-server', condition: 'react-server',
@ -509,7 +490,7 @@ const bundles = [
/******* React Server DOM Turbopack Client *******/ /******* React Server DOM Turbopack Client *******/
{ {
bundleTypes: [NODE_DEV, NODE_PROD, UMD_DEV, UMD_PROD], bundleTypes: [NODE_DEV, NODE_PROD],
moduleType: RENDERER, moduleType: RENDERER,
entry: 'react-server-dom-turbopack/client.browser', entry: 'react-server-dom-turbopack/client.browser',
global: 'ReactServerDOMClient', global: 'ReactServerDOMClient',
@ -651,14 +632,7 @@ const bundles = [
/******* React ART *******/ /******* React ART *******/
{ {
bundleTypes: [ bundleTypes: [NODE_DEV, NODE_PROD, FB_WWW_DEV, FB_WWW_PROD],
UMD_DEV,
UMD_PROD,
NODE_DEV,
NODE_PROD,
FB_WWW_DEV,
FB_WWW_PROD,
],
moduleType: RENDERER, moduleType: RENDERER,
entry: 'react-art', entry: 'react-art',
global: 'ReactART', global: 'ReactART',
@ -752,8 +726,6 @@ const bundles = [
FB_WWW_DEV, FB_WWW_DEV,
NODE_DEV, NODE_DEV,
NODE_PROD, NODE_PROD,
UMD_DEV,
UMD_PROD,
RN_FB_DEV, RN_FB_DEV,
RN_FB_PROD, RN_FB_PROD,
RN_FB_PROFILING, RN_FB_PROFILING,
@ -917,8 +889,6 @@ const bundles = [
NODE_PROD, NODE_PROD,
FB_WWW_DEV, FB_WWW_DEV,
FB_WWW_PROD, FB_WWW_PROD,
UMD_DEV,
UMD_PROD,
RN_FB_DEV, RN_FB_DEV,
RN_FB_PROD, RN_FB_PROD,
RN_FB_PROFILING, RN_FB_PROFILING,
@ -1044,8 +1014,6 @@ const bundles = [
/******* React Scheduler Mock (experimental) *******/ /******* React Scheduler Mock (experimental) *******/
{ {
bundleTypes: [ bundleTypes: [
UMD_DEV,
UMD_PROD,
NODE_DEV, NODE_DEV,
NODE_PROD, NODE_PROD,
FB_WWW_DEV, FB_WWW_DEV,
@ -1172,12 +1140,6 @@ function getFilename(bundle, bundleType) {
return `${name}.development.js`; return `${name}.development.js`;
case ESM_PROD: case ESM_PROD:
return `${name}.production.min.js`; return `${name}.production.min.js`;
case UMD_DEV:
return `${name}.development.js`;
case UMD_PROD:
return `${name}.production.min.js`;
case UMD_PROFILING:
return `${name}.profiling.min.js`;
case NODE_DEV: case NODE_DEV:
return `${name}.development.js`; return `${name}.development.js`;
case NODE_PROD: case NODE_PROD:

View File

@ -5,9 +5,6 @@ const {bundleTypes, moduleTypes} = require('./bundles');
const inlinedHostConfigs = require('../shared/inlinedHostConfigs'); const inlinedHostConfigs = require('../shared/inlinedHostConfigs');
const { const {
UMD_DEV,
UMD_PROD,
UMD_PROFILING,
FB_WWW_DEV, FB_WWW_DEV,
FB_WWW_PROD, FB_WWW_PROD,
FB_WWW_PROFILING, FB_WWW_PROFILING,
@ -188,25 +185,6 @@ const forks = Object.freeze({
return null; return null;
}, },
'./packages/scheduler/index.js': (bundleType, entry, dependencies) => {
switch (bundleType) {
case UMD_DEV:
case UMD_PROD:
case UMD_PROFILING:
if (dependencies.indexOf('react') === -1) {
// It's only safe to use this fork for modules that depend on React,
// because they read the re-exported API from the SECRET_INTERNALS object.
return null;
}
// Optimization: for UMDs, use the API that is already a part of the React
// package instead of requiring it to be loaded via a separate <script> tag
return './packages/shared/forks/Scheduler.umd.js';
default:
// For other bundles, use the shared NPM package.
return null;
}
},
'./packages/scheduler/src/SchedulerFeatureFlags.js': ( './packages/scheduler/src/SchedulerFeatureFlags.js': (
bundleType, bundleType,
entry, entry,
@ -231,17 +209,6 @@ const forks = Object.freeze({
} }
}, },
'./packages/react/src/ReactSharedInternalsClient.js': (bundleType, entry) => {
switch (bundleType) {
case UMD_DEV:
case UMD_PROD:
case UMD_PROFILING:
return './packages/react/src/forks/ReactSharedInternalsClient.umd.js';
default:
return null;
}
},
'./packages/react-reconciler/src/ReactFiberConfig.js': ( './packages/react-reconciler/src/ReactFiberConfig.js': (
bundleType, bundleType,
entry, entry,

View File

@ -1,7 +1,6 @@
'use strict'; 'use strict';
const forks = require('./forks'); const forks = require('./forks');
const {UMD_DEV, UMD_PROD, UMD_PROFILING} = require('./bundles').bundleTypes;
// For any external that is used in a DEV-only condition, explicitly // For any external that is used in a DEV-only condition, explicitly
// specify whether it has side effects during import or not. This lets // specify whether it has side effects during import or not. This lets
@ -40,14 +39,6 @@ const knownGlobals = Object.freeze({
function getPeerGlobals(externals, bundleType) { function getPeerGlobals(externals, bundleType) {
const peerGlobals = {}; const peerGlobals = {};
externals.forEach(name => { externals.forEach(name => {
if (
!knownGlobals[name] &&
(bundleType === UMD_DEV ||
bundleType === UMD_PROD ||
bundleType === UMD_PROFILING)
) {
throw new Error('Cannot build UMD without a global name for: ' + name);
}
peerGlobals[name] = knownGlobals[name]; peerGlobals[name] = knownGlobals[name];
}); });
return peerGlobals; return peerGlobals;

View File

@ -21,9 +21,6 @@ const {
NODE_ES2015, NODE_ES2015,
ESM_DEV, ESM_DEV,
ESM_PROD, ESM_PROD,
UMD_DEV,
UMD_PROD,
UMD_PROFILING,
NODE_DEV, NODE_DEV,
NODE_PROD, NODE_PROD,
NODE_PROFILING, NODE_PROFILING,
@ -62,10 +59,6 @@ function getBundleOutputPath(bundle, bundleType, filename, packageName) {
case NODE_PROD: case NODE_PROD:
case NODE_PROFILING: case NODE_PROFILING:
return `build/node_modules/${packageName}/cjs/${filename}`; return `build/node_modules/${packageName}/cjs/${filename}`;
case UMD_DEV:
case UMD_PROD:
case UMD_PROFILING:
return `build/node_modules/${packageName}/umd/${filename}`;
case FB_WWW_DEV: case FB_WWW_DEV:
case FB_WWW_PROD: case FB_WWW_PROD:
case FB_WWW_PROFILING: case FB_WWW_PROFILING:

View File

@ -1,94 +0,0 @@
'use strict';
module.exports = {
env: {
browser: true,
},
globals: {
// ES6
BigInt: 'readonly',
Map: 'readonly',
Set: 'readonly',
Symbol: 'readonly',
Proxy: 'readonly',
WeakMap: 'readonly',
WeakSet: 'readonly',
Int8Array: 'readonly',
Uint8Array: 'readonly',
Uint8ClampedArray: 'readonly',
Int16Array: 'readonly',
Uint16Array: 'readonly',
Int32Array: 'readonly',
Uint32Array: 'readonly',
Float32Array: 'readonly',
Float64Array: 'readonly',
BigInt64Array: 'readonly',
BigUint64Array: 'readonly',
DataView: 'readonly',
ArrayBuffer: 'readonly',
Reflect: 'readonly',
globalThis: 'readonly',
FinalizationRegistry: 'readonly',
// Vendor specific
MSApp: 'readonly',
__REACT_DEVTOOLS_GLOBAL_HOOK__: 'readonly',
// UMD wrapper code
// TODO: this is too permissive.
// Ideally we should only allow these *inside* the UMD wrapper.
exports: 'readonly',
module: 'readonly',
define: 'readonly',
require: 'readonly',
global: 'readonly',
// Internet Explorer
setImmediate: 'readonly',
// Trusted Types
trustedTypes: 'readonly',
// Scheduler profiling
TaskController: 'readonly',
reportError: 'readonly',
AggregateError: 'readonly',
// Flight
Promise: 'readonly',
// Node Feature Detection
process: 'readonly',
// Temp
AsyncLocalStorage: 'readonly',
async_hooks: 'readonly',
// Flight Webpack
__webpack_chunk_load__: 'readonly',
__webpack_require__: 'readonly',
// Flight Turbopack
__turbopack_load__: 'readonly',
__turbopack_require__: 'readonly',
// jest
jest: 'readonly',
// act
IS_REACT_ACT_ENVIRONMENT: 'readonly',
},
parserOptions: {
ecmaVersion: 5,
sourceType: 'script',
},
rules: {
'no-undef': 'error',
'no-shadow-restricted-names': 'error',
},
// These plugins aren't used, but eslint complains if an eslint-ignore comment
// references unused plugins. An alternate approach could be to strip
// eslint-ignore comments as part of the build.
plugins: ['ft-flow', 'jest', 'no-for-of-loops', 'react', 'react-internal'],
};

View File

@ -41,9 +41,6 @@ function getFormat(filepath) {
if (filepath.includes('esm')) { if (filepath.includes('esm')) {
return 'esm'; return 'esm';
} }
if (filepath.includes('umd')) {
return 'umd';
}
if ( if (
filepath.includes('oss-experimental') || filepath.includes('oss-experimental') ||
filepath.includes('oss-stable') filepath.includes('oss-stable')

View File

@ -9,9 +9,6 @@ const {
NODE_ES2015, NODE_ES2015,
ESM_DEV, ESM_DEV,
ESM_PROD, ESM_PROD,
UMD_DEV,
UMD_PROD,
UMD_PROFILING,
NODE_DEV, NODE_DEV,
NODE_PROD, NODE_PROD,
NODE_PROFILING, NODE_PROFILING,
@ -81,21 +78,6 @@ ${source}`;
return source; return source;
}, },
/***************** UMD_DEV *****************/
[UMD_DEV](source, globalName, filename, moduleType) {
return source;
},
/***************** UMD_PROD *****************/
[UMD_PROD](source, globalName, filename, moduleType) {
return `(function(){${source}})();`;
},
/***************** UMD_PROFILING *****************/
[UMD_PROFILING](source, globalName, filename, moduleType) {
return `(function(){${source}})();`;
},
/***************** NODE_DEV *****************/ /***************** NODE_DEV *****************/
[NODE_DEV](source, globalName, filename, moduleType) { [NODE_DEV](source, globalName, filename, moduleType) {
return `'use strict'; return `'use strict';
@ -282,42 +264,6 @@ ${source}`;
${license} ${license}
*/ */
${source}`;
},
/***************** UMD_DEV *****************/
[UMD_DEV](source, globalName, filename, moduleType) {
return `/**
* @license React
* ${filename}
*
${license}
*/
${source}`;
},
/***************** UMD_PROD *****************/
[UMD_PROD](source, globalName, filename, moduleType) {
return `/**
* @license React
* ${filename}
*
${license}
*/
${source}`;
},
/***************** UMD_PROFILING *****************/
[UMD_PROFILING](source, globalName, filename, moduleType) {
return `/**
* @license React
* ${filename}
*
${license}
*/
${source}`; ${source}`;
}, },