Skip to content

Commit 8a15d0c

Browse files
authored
Merge React Refresh runtime and transformer (#10056)
1 parent 3a06472 commit 8a15d0c

File tree

12 files changed

+39
-131
lines changed

12 files changed

+39
-131
lines changed

packages/configs/default/index.json

-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@
5050
"runtimes": [
5151
"@parcel/runtime-js",
5252
"@parcel/runtime-browser-hmr",
53-
"@parcel/runtime-react-refresh",
5453
"@parcel/runtime-service-worker"
5554
],
5655
"optimizers": {

packages/configs/default/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
"@parcel/resolver-default": "2.13.3",
3737
"@parcel/runtime-browser-hmr": "2.13.3",
3838
"@parcel/runtime-js": "2.13.3",
39-
"@parcel/runtime-react-refresh": "2.13.3",
4039
"@parcel/runtime-service-worker": "2.13.3",
4140
"@parcel/transformer-babel": "2.13.3",
4241
"@parcel/transformer-css": "2.13.3",

packages/configs/repl/index.json

+1-5
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,7 @@
1616
"url:*": ["@parcel/transformer-raw"]
1717
},
1818
"namers": ["@parcel/namer-default"],
19-
"runtimes": [
20-
"@parcel/runtime-js",
21-
"@parcel/runtime-browser-hmr",
22-
"@parcel/runtime-react-refresh"
23-
],
19+
"runtimes": ["@parcel/runtime-js", "@parcel/runtime-browser-hmr"],
2420
"optimizers": {
2521
"*.{js,mjs,cjs}": ["@parcel/optimizer-terser"],
2622
"*.css": ["@parcel/optimizer-css"]

packages/configs/repl/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
"@parcel/resolver-repl-runtimes": "2.13.3",
2727
"@parcel/runtime-browser-hmr": "2.13.3",
2828
"@parcel/runtime-js": "2.13.3",
29-
"@parcel/runtime-react-refresh": "2.13.3",
3029
"@parcel/transformer-babel": "2.13.3",
3130
"@parcel/transformer-css": "2.13.3",
3231
"@parcel/transformer-html": "2.13.3",
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"dependencies": {
3-
"react": "*"
3+
"react": "^19"
44
}
55
}

packages/dev/repl/src/parcel/BrowserPackageManager.js

-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import resolverDefault from '@parcel/resolver-default';
2929
import resolverREPLRuntimes from '@parcel/resolver-repl-runtimes';
3030
import runtimeHMR from '@parcel/runtime-browser-hmr';
3131
import runtimeJs from '@parcel/runtime-js';
32-
import runtimeReactRefresh from '@parcel/runtime-react-refresh';
3332
import transformerBabel from '@parcel/transformer-babel';
3433
import transformerCss from '@parcel/transformer-css';
3534
import transformerHtml from '@parcel/transformer-html';
@@ -57,7 +56,6 @@ export const BUILTINS = {
5756
'@parcel/resolver-repl-runtimes': resolverREPLRuntimes,
5857
'@parcel/runtime-browser-hmr': runtimeHMR,
5958
'@parcel/runtime-js': runtimeJs,
60-
'@parcel/runtime-react-refresh': runtimeReactRefresh,
6159
'@parcel/transformer-babel': transformerBabel,
6260
'@parcel/transformer-css': transformerCss,
6361
'@parcel/transformer-html': transformerHtml,

packages/runtimes/react-refresh/package.json

-28
This file was deleted.

packages/runtimes/react-refresh/src/ReactRefreshRuntime.js

-74
This file was deleted.

packages/transformers/react-refresh-wrap/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"dependencies": {
2323
"@parcel/plugin": "2.13.3",
2424
"@parcel/utils": "2.13.3",
25-
"react-refresh": ">=0.9 <=0.14"
25+
"react-error-overlay": "6.0.9",
26+
"react-refresh": ">=0.9 <=0.16"
2627
}
2728
}

packages/transformers/react-refresh-wrap/src/ReactRefreshWrapTransformer.js

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export default (new Transformer({
4141
let name = `$parcel$ReactRefreshHelpers$${asset.id.slice(-4)}`;
4242

4343
code = `var ${name} = require(${JSON.stringify(wrapperPath)});
44+
${name}.init();
4445
var prevRefreshReg = globalThis.$RefreshReg$;
4546
var prevRefreshSig = globalThis.$RefreshSig$;
4647
${name}.prelude(module);

packages/transformers/react-refresh-wrap/src/helpers/helpers.js

+30-13
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
var Refresh = require('react-refresh/runtime');
2-
var {version} = require('react-refresh/package.json');
32

43
function debounce(func, delay) {
54
if (process.env.NODE_ENV === 'test') {
@@ -33,24 +32,42 @@ var enqueueUpdate = debounce(function () {
3332
Refresh.performReactRefresh();
3433
}, 30);
3534

35+
module.exports.init = function () {
36+
if (!globalThis.$RefreshReg$) {
37+
Refresh.injectIntoGlobalHook(globalThis);
38+
globalThis.$RefreshReg$ = function () {};
39+
globalThis.$RefreshSig$ = function () {
40+
return function (type) {
41+
return type;
42+
};
43+
};
44+
45+
if (typeof window !== 'undefined') {
46+
let ErrorOverlay = require('react-error-overlay');
47+
ErrorOverlay.setEditorHandler(function editorHandler(errorLocation) {
48+
let file = `${errorLocation.fileName}:${
49+
errorLocation.lineNumber || 1
50+
}:${errorLocation.colNumber || 1}`;
51+
fetch(`/__parcel_launch_editor?file=${encodeURIComponent(file)}`);
52+
});
53+
54+
ErrorOverlay.startReportingRuntimeErrors({
55+
onError: function () {},
56+
});
57+
58+
window.addEventListener('parcelhmraccept', () => {
59+
ErrorOverlay.dismissRuntimeErrors();
60+
});
61+
}
62+
}
63+
};
64+
3665
// Everything below is either adapted or copied from
3766
// https://github.com/facebook/metro/blob/61de16bd1edd7e738dd0311c89555a644023ab2d/packages/metro/src/lib/polyfills/require.js
3867
// MIT License - Copyright (c) Facebook, Inc. and its affiliates.
3968

4069
module.exports.prelude = function (module) {
41-
globalThis.__REACT_REFRESH_VERSION_TRANSFORMER = version;
4270
globalThis.$RefreshReg$ = function (type, id) {
43-
if (
44-
globalThis.__REACT_REFRESH_VERSION_TRANSFORMER &&
45-
globalThis.__REACT_REFRESH_VERSION_RUNTIME &&
46-
globalThis.__REACT_REFRESH_VERSION_TRANSFORMER !==
47-
globalThis.__REACT_REFRESH_VERSION_RUNTIME
48-
) {
49-
// Both versions were set and they did not match
50-
throw new Error(
51-
`react-refresh versions did not match between transformer and runtime. Please check your dependencies. Transformer: ${globalThis.__REACT_REFRESH_VERSION_TRANSFORMER}, Runtime: ${globalThis.__REACT_REFRESH_VERSION_RUNTIME}`,
52-
);
53-
}
5471
Refresh.register(type, module.id + ' ' + id);
5572
};
5673
globalThis.$RefreshSig$ = Refresh.createSignatureFunctionForTransform;

yarn.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -12322,10 +12322,10 @@ react-is@^18.0.0:
1232212322
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e"
1232312323
integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
1232412324

12325-
"react-refresh@>=0.9 <=0.14":
12326-
version "0.14.2"
12327-
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9"
12328-
integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==
12325+
"react-refresh@>=0.9 <=0.16":
12326+
version "0.16.0"
12327+
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.16.0.tgz#e7d45625f05c9709466d09348a25d22f79b2ad23"
12328+
integrity sha512-FPvF2XxTSikpJxcr+bHut2H4gJ17+18Uy20D5/F+SKzFap62R3cM5wH6b8WN3LyGSYeQilLEcJcR1fjBSI2S1A==
1232912329

1233012330
react-resizable-panels@^0.0.61:
1233112331
version "0.0.61"

0 commit comments

Comments
 (0)