@parcel/transformer-react-refresh-wrap 2.0.0-beta.2 → 2.0.0-nightly.1004

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,16 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- function _semver() {
9
- const data = _interopRequireDefault(require("semver"));
10
-
11
- _semver = function () {
12
- return data;
13
- };
14
-
15
- return data;
16
- }
17
-
18
8
  function _path() {
19
9
  const data = _interopRequireDefault(require("path"));
20
10
 
@@ -25,16 +15,6 @@ function _path() {
25
15
  return data;
26
16
  }
27
17
 
28
- function _babelAstUtils() {
29
- const data = require("@parcel/babel-ast-utils");
30
-
31
- _babelAstUtils = function () {
32
- return data;
33
- };
34
-
35
- return data;
36
- }
37
-
38
18
  function _plugin() {
39
19
  const data = require("@parcel/plugin");
40
20
 
@@ -45,123 +25,51 @@ function _plugin() {
45
25
  return data;
46
26
  }
47
27
 
48
- function _utils() {
49
- const data = require("@parcel/utils");
50
-
51
- _utils = function () {
52
- return data;
53
- };
54
-
55
- return data;
56
- }
57
-
58
- function _template() {
59
- const data = _interopRequireDefault(require("@babel/template"));
60
-
61
- _template = function () {
62
- return data;
63
- };
64
-
65
- return data;
66
- }
67
-
68
- function t() {
69
- const data = _interopRequireWildcard(require("@babel/types"));
70
-
71
- t = function () {
72
- return data;
73
- };
74
-
75
- return data;
76
- }
77
-
78
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
79
-
80
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
81
-
82
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
83
29
 
84
- const WRAPPER = _path().default.join(__dirname, 'helpers', 'helpers.js');
85
-
86
- const wrapper = _template().default.statements(`
87
- var helpers = require(%%helper%%);
88
- var prevRefreshReg = window.$RefreshReg$;
89
- var prevRefreshSig = window.$RefreshSig$;
90
- helpers.prelude(module);
91
-
92
- try {
93
- %%module%%
94
- helpers.postlude(module);
95
- } finally {
96
- window.$RefreshReg$ = prevRefreshReg;
97
- window.$RefreshSig$ = prevRefreshSig;
98
- }
99
- `);
100
-
101
30
  function shouldExclude(asset, options) {
102
- return !asset.isSource || !options.hmrOptions || !asset.env.isBrowser() || options.mode !== 'development' || !asset.getDependencies().find(v => v.moduleSpecifier === 'react');
31
+ return !asset.isSource || !options.hmrOptions || !asset.env.isBrowser() || asset.env.isWorker() || asset.env.isWorklet() || options.mode !== 'development' || !asset.getDependencies().find(v => v.specifier === 'react' || v.specifier === 'react/jsx-runtime' || v.specifier === 'react/jsx-dev-runtime');
103
32
  }
104
33
 
105
34
  var _default = new (_plugin().Transformer)({
106
- canReuseAST({
107
- ast
108
- }) {
109
- return ast.type === 'babel' && _semver().default.satisfies(ast.version, '^7.0.0');
110
- },
111
-
112
- async parse({
113
- asset,
114
- options
115
- }) {
116
- if (shouldExclude(asset, options)) {
117
- return null;
118
- }
119
-
120
- return (0, _babelAstUtils().parse)({
121
- asset,
122
- code: await asset.getCode(),
123
- options
124
- });
125
- },
126
-
127
35
  async transform({
128
36
  asset,
129
37
  options
130
38
  }) {
131
- let ast = await asset.getAST();
132
-
133
- if (!ast || shouldExclude(asset, options)) {
39
+ if (shouldExclude(asset, options)) {
134
40
  return [asset];
135
41
  }
136
42
 
137
- let wrapperPath = (0, _utils().relativePath)(_path().default.dirname(asset.filePath), WRAPPER);
43
+ let wrapperPath = `@parcel/transformer-react-refresh-wrap/${_path().default.basename(__dirname)}/helpers/helpers.js`;
44
+ let code = await asset.getCode();
45
+ let map = await asset.getMap();
46
+ let name = `$parcel$ReactRefreshHelpers$${asset.id.slice(-4)}`;
47
+ code = `var ${name} = require(${JSON.stringify(wrapperPath)});
48
+ var prevRefreshReg = window.$RefreshReg$;
49
+ var prevRefreshSig = window.$RefreshSig$;
50
+ ${name}.prelude(module);
138
51
 
139
- if (!wrapperPath.startsWith('.')) {
140
- wrapperPath = './' + wrapperPath;
141
- }
52
+ try {
53
+ ${code}
54
+ ${name}.postlude(module);
55
+ } finally {
56
+ window.$RefreshReg$ = prevRefreshReg;
57
+ window.$RefreshSig$ = prevRefreshSig;
58
+ }`;
59
+ asset.setCode(code);
60
+
61
+ if (map) {
62
+ map.offsetLines(1, 6);
63
+ asset.setMap(map);
64
+ } // The JSTransformer has already run, do it manually
142
65
 
143
- ast.program.program.body = wrapper({
144
- helper: t().stringLiteral(wrapperPath),
145
- module: ast.program.program.body
146
- });
147
- asset.setAST(ast); // The JSTransformer has already run, do it manually
148
66
 
149
67
  asset.addDependency({
150
- moduleSpecifier: wrapperPath
68
+ specifier: wrapperPath,
69
+ specifierType: 'esm',
70
+ resolveFrom: __filename
151
71
  });
152
72
  return [asset];
153
- },
154
-
155
- generate({
156
- asset,
157
- ast,
158
- options
159
- }) {
160
- return (0, _babelAstUtils().generate)({
161
- asset,
162
- ast,
163
- options
164
- });
165
73
  }
166
74
 
167
75
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@parcel/transformer-react-refresh-wrap",
3
- "version": "2.0.0-beta.2",
3
+ "version": "2.0.0-nightly.1004+47379bf8",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -17,16 +17,12 @@
17
17
  "source": "src/ReactRefreshWrapTransformer.js",
18
18
  "engines": {
19
19
  "node": ">= 12.0.0",
20
- "parcel": "^2.0.0-beta.1"
20
+ "parcel": "2.0.0-nightly.1002+47379bf8"
21
21
  },
22
22
  "dependencies": {
23
- "@babel/template": "^7.4.0",
24
- "@babel/types": "^7.12.13",
25
- "@parcel/babel-ast-utils": "2.0.0-beta.2",
26
- "@parcel/plugin": "2.0.0-beta.2",
27
- "@parcel/utils": "2.0.0-beta.2",
28
- "react-refresh": "^0.9.0",
29
- "semver": "^5.4.1"
23
+ "@parcel/plugin": "2.0.0-nightly.1004+47379bf8",
24
+ "@parcel/utils": "2.0.0-nightly.1004+47379bf8",
25
+ "react-refresh": "^0.9.0"
30
26
  },
31
- "gitHead": "a3aa86815e098c90fda72a08d29646ff059ab74d"
27
+ "gitHead": "47379bf8fabeb2cfe03ade8802d942388b153e5b"
32
28
  }
@@ -1,88 +1,67 @@
1
1
  // @flow
2
2
 
3
- import type {StringLiteral, Statement} from '@babel/types';
4
-
5
- import semver from 'semver';
6
3
  import path from 'path';
7
- import {generate, parse} from '@parcel/babel-ast-utils';
8
4
  import {Transformer} from '@parcel/plugin';
9
- import {relativePath} from '@parcel/utils';
10
- import template from '@babel/template';
11
- import * as t from '@babel/types';
12
-
13
- const WRAPPER = path.join(__dirname, 'helpers', 'helpers.js');
14
-
15
- const wrapper = template.statements<{|
16
- helper: StringLiteral,
17
- module: Array<Statement>,
18
- |}>(`
19
- var helpers = require(%%helper%%);
20
- var prevRefreshReg = window.$RefreshReg$;
21
- var prevRefreshSig = window.$RefreshSig$;
22
- helpers.prelude(module);
23
-
24
- try {
25
- %%module%%
26
- helpers.postlude(module);
27
- } finally {
28
- window.$RefreshReg$ = prevRefreshReg;
29
- window.$RefreshSig$ = prevRefreshSig;
30
- }
31
- `);
32
5
 
33
6
  function shouldExclude(asset, options) {
34
7
  return (
35
8
  !asset.isSource ||
36
9
  !options.hmrOptions ||
37
10
  !asset.env.isBrowser() ||
11
+ asset.env.isWorker() ||
12
+ asset.env.isWorklet() ||
38
13
  options.mode !== 'development' ||
39
- !asset.getDependencies().find(v => v.moduleSpecifier === 'react')
14
+ !asset
15
+ .getDependencies()
16
+ .find(
17
+ v =>
18
+ v.specifier === 'react' ||
19
+ v.specifier === 'react/jsx-runtime' ||
20
+ v.specifier === 'react/jsx-dev-runtime',
21
+ )
40
22
  );
41
23
  }
42
24
 
43
25
  export default (new Transformer({
44
- canReuseAST({ast}) {
45
- return ast.type === 'babel' && semver.satisfies(ast.version, '^7.0.0');
46
- },
47
-
48
- async parse({asset, options}) {
26
+ async transform({asset, options}) {
49
27
  if (shouldExclude(asset, options)) {
50
- return null;
28
+ return [asset];
51
29
  }
52
30
 
53
- return parse({
54
- asset,
55
- code: await asset.getCode(),
56
- options,
57
- });
58
- },
31
+ let wrapperPath = `@parcel/transformer-react-refresh-wrap/${path.basename(
32
+ __dirname,
33
+ )}/helpers/helpers.js`;
59
34
 
60
- async transform({asset, options}) {
61
- let ast = await asset.getAST();
62
- if (!ast || shouldExclude(asset, options)) {
63
- return [asset];
64
- }
35
+ let code = await asset.getCode();
36
+ let map = await asset.getMap();
37
+ let name = `$parcel$ReactRefreshHelpers$${asset.id.slice(-4)}`;
65
38
 
66
- let wrapperPath = relativePath(path.dirname(asset.filePath), WRAPPER);
67
- if (!wrapperPath.startsWith('.')) {
68
- wrapperPath = './' + wrapperPath;
69
- }
39
+ code = `var ${name} = require(${JSON.stringify(wrapperPath)});
40
+ var prevRefreshReg = window.$RefreshReg$;
41
+ var prevRefreshSig = window.$RefreshSig$;
42
+ ${name}.prelude(module);
70
43
 
71
- ast.program.program.body = wrapper({
72
- helper: t.stringLiteral(wrapperPath),
73
- module: ast.program.program.body,
74
- });
75
- asset.setAST(ast);
44
+ try {
45
+ ${code}
46
+ ${name}.postlude(module);
47
+ } finally {
48
+ window.$RefreshReg$ = prevRefreshReg;
49
+ window.$RefreshSig$ = prevRefreshSig;
50
+ }`;
51
+
52
+ asset.setCode(code);
53
+ if (map) {
54
+ map.offsetLines(1, 6);
55
+ asset.setMap(map);
56
+ }
76
57
 
77
58
  // The JSTransformer has already run, do it manually
78
59
  asset.addDependency({
79
- moduleSpecifier: wrapperPath,
60
+ specifier: wrapperPath,
61
+ specifierType: 'esm',
62
+ resolveFrom: __filename,
80
63
  });
81
64
 
82
65
  return [asset];
83
66
  },
84
-
85
- generate({asset, ast, options}) {
86
- return generate({asset, ast, options});
87
- },
88
67
  }): Transformer);
@@ -2,21 +2,21 @@ var Refresh = require('react-refresh/runtime');
2
2
 
3
3
  function debounce(func, delay) {
4
4
  if (process.env.NODE_ENV === 'test') {
5
- return function(args) {
5
+ return function (args) {
6
6
  func.call(null, args);
7
7
  };
8
8
  } else {
9
9
  var timeout = undefined;
10
- return function(args) {
10
+ return function (args) {
11
11
  clearTimeout(timeout);
12
- timeout = setTimeout(function() {
12
+ timeout = setTimeout(function () {
13
13
  timeout = undefined;
14
14
  func.call(null, args);
15
15
  }, delay);
16
16
  };
17
17
  }
18
18
  }
19
- var enqueueUpdate = debounce(function() {
19
+ var enqueueUpdate = debounce(function () {
20
20
  Refresh.performReactRefresh();
21
21
  }, 30);
22
22
 
@@ -24,19 +24,19 @@ var enqueueUpdate = debounce(function() {
24
24
  // https://github.com/facebook/metro/blob/61de16bd1edd7e738dd0311c89555a644023ab2d/packages/metro/src/lib/polyfills/require.js
25
25
  // MIT License - Copyright (c) Facebook, Inc. and its affiliates.
26
26
 
27
- module.exports.prelude = function(module) {
28
- window.$RefreshReg$ = function(type, id) {
27
+ module.exports.prelude = function (module) {
28
+ window.$RefreshReg$ = function (type, id) {
29
29
  Refresh.register(type, module.id + ' ' + id);
30
30
  };
31
31
  window.$RefreshSig$ = Refresh.createSignatureFunctionForTransform;
32
32
  };
33
33
 
34
- module.exports.postlude = function(module) {
34
+ module.exports.postlude = function (module) {
35
35
  if (isReactRefreshBoundary(module.exports)) {
36
36
  registerExportsForReactRefresh(module);
37
37
 
38
38
  if (module.hot) {
39
- module.hot.dispose(function(data) {
39
+ module.hot.dispose(function (data) {
40
40
  if (Refresh.hasUnrecoverableErrors()) {
41
41
  window.location.reload();
42
42
  }
@@ -44,7 +44,7 @@ module.exports.postlude = function(module) {
44
44
  data.prevExports = module.exports;
45
45
  });
46
46
 
47
- module.hot.accept(function(getParents) {
47
+ module.hot.accept(function (getParents) {
48
48
  var prevExports = module.hot.data.prevExports;
49
49
  var nextExports = module.exports;
50
50
  // Since we just executed the code for it, it's possible