@parcel/transformer-babel 2.0.0-nightly.97 → 2.0.0-nightly.970

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,50 +5,85 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _plugin = require("@parcel/plugin");
8
+ function _babelAstUtils() {
9
+ const data = require("@parcel/babel-ast-utils");
9
10
 
10
- var _sourceMap = _interopRequireDefault(require("@parcel/source-map"));
11
+ _babelAstUtils = function () {
12
+ return data;
13
+ };
11
14
 
12
- var _generator = _interopRequireDefault(require("@babel/generator"));
15
+ return data;
16
+ }
13
17
 
14
- var _semver = _interopRequireDefault(require("semver"));
18
+ function _plugin() {
19
+ const data = require("@parcel/plugin");
15
20
 
16
- var _babel = _interopRequireDefault(require("./babel7"));
21
+ _plugin = function () {
22
+ return data;
23
+ };
17
24
 
18
- var _utils = require("@parcel/utils");
25
+ return data;
26
+ }
19
27
 
20
- var _config = require("./config");
28
+ function _utils() {
29
+ const data = require("@parcel/utils");
30
+
31
+ _utils = function () {
32
+ return data;
33
+ };
34
+
35
+ return data;
36
+ }
37
+
38
+ function _sourceMap() {
39
+ const data = _interopRequireDefault(require("@parcel/source-map"));
40
+
41
+ _sourceMap = function () {
42
+ return data;
43
+ };
44
+
45
+ return data;
46
+ }
47
+
48
+ function _semver() {
49
+ const data = _interopRequireDefault(require("semver"));
21
50
 
22
- var _babelErrorUtils = require("./babelErrorUtils");
51
+ _semver = function () {
52
+ return data;
53
+ };
54
+
55
+ return data;
56
+ }
57
+
58
+ function _generator() {
59
+ const data = _interopRequireDefault(require("@babel/generator"));
60
+
61
+ _generator = function () {
62
+ return data;
63
+ };
64
+
65
+ return data;
66
+ }
67
+
68
+ var _babel = _interopRequireDefault(require("./babel7"));
69
+
70
+ var _config = require("./config");
23
71
 
24
72
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
73
 
26
- var _default = new _plugin.Transformer({
27
- async loadConfig({
74
+ var _default = new (_plugin().Transformer)({
75
+ loadConfig({
28
76
  config,
29
77
  options,
30
78
  logger
31
79
  }) {
32
- await (0, _config.load)(config, options, logger);
33
- },
34
-
35
- preSerializeConfig({
36
- config
37
- }) {
38
- return (0, _config.preSerialize)(config);
39
- },
40
-
41
- postDeserializeConfig({
42
- config,
43
- options
44
- }) {
45
- return (0, _config.postDeserialize)(config, options);
80
+ return (0, _config.load)(config, options, logger);
46
81
  },
47
82
 
48
83
  canReuseAST({
49
84
  ast
50
85
  }) {
51
- return ast.type === 'babel' && _semver.default.satisfies(ast.version, '^7.0.0');
86
+ return ast.type === 'babel' && _semver().default.satisfies(ast.version, '^7.0.0');
52
87
  },
53
88
 
54
89
  async transform({
@@ -56,44 +91,69 @@ var _default = new _plugin.Transformer({
56
91
  config,
57
92
  options
58
93
  }) {
59
- // TODO: come up with a better name
60
94
  try {
61
- if (config === null || config === void 0 ? void 0 : config.config) {
62
- if (asset.meta.babelPlugins && Array.isArray(asset.meta.babelPlugins)) {
63
- // $FlowFixMe
64
- asset.ast = await (0, _babel.default)(asset, options, config, asset.meta.babelPlugins);
95
+ if (config !== null && config !== void 0 && config.config) {
96
+ if (asset.meta.babelPlugins != null && Array.isArray(asset.meta.babelPlugins)) {
97
+ await (0, _babel.default)({
98
+ asset,
99
+ options,
100
+ babelOptions: config,
101
+ additionalPlugins: asset.meta.babelPlugins
102
+ });
65
103
  } else {
66
- asset.ast = await (0, _babel.default)(asset, options, config);
104
+ await (0, _babel.default)({
105
+ asset,
106
+ options,
107
+ babelOptions: config
108
+ });
67
109
  }
68
110
  }
69
111
 
70
112
  return [asset];
71
113
  } catch (e) {
72
- throw await (0, _babelErrorUtils.babelErrorEnhancer)(e, asset);
114
+ throw await (0, _babelAstUtils().babelErrorEnhancer)(e, asset);
73
115
  }
74
116
  },
75
117
 
76
118
  async generate({
77
119
  asset,
120
+ ast,
78
121
  options
79
122
  }) {
80
- let sourceFileName = (0, _utils.relativeUrl)(options.projectRoot, asset.filePath);
123
+ let originalSourceMap = await asset.getMap();
124
+ let sourceFileName = (0, _utils().relativeUrl)(options.projectRoot, asset.filePath);
125
+ let {
126
+ code,
127
+ rawMappings
128
+ } = (0, _generator().default)(ast.program, {
129
+ sourceFileName,
130
+ sourceMaps: !!asset.env.sourceMap,
131
+ comments: true
132
+ });
133
+ let map = new (_sourceMap().default)(options.projectRoot);
134
+
135
+ if (rawMappings) {
136
+ map.addIndexedMappings(rawMappings);
137
+ }
81
138
 
82
- try {
83
- // $FlowFixMe: figure out how to make AST required in generate method
84
- let generated = (0, _generator.default)(asset.ast.program, {
85
- sourceMaps: options.sourceMaps,
86
- sourceFileName: sourceFileName
87
- });
88
- return {
89
- code: generated.code,
90
- map: new _sourceMap.default(generated.rawMappings, {
91
- [sourceFileName]: null
92
- })
93
- };
94
- } catch (e) {
95
- throw await (0, _babelErrorUtils.babelErrorEnhancer)(e, asset);
139
+ if (originalSourceMap) {
140
+ // The babel AST already contains the correct mappings, but not the source contents.
141
+ // We need to copy over the source contents from the original map.
142
+ let sourcesContent = originalSourceMap.getSourcesContentMap();
143
+
144
+ for (let filePath in sourcesContent) {
145
+ let content = sourcesContent[filePath];
146
+
147
+ if (content != null) {
148
+ map.setSourceContent(filePath, content);
149
+ }
150
+ }
96
151
  }
152
+
153
+ return {
154
+ content: code,
155
+ map
156
+ };
97
157
  }
98
158
 
99
159
  });
@@ -6,7 +6,15 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.babel7toBabel6 = babel7toBabel6;
7
7
  exports.babel6toBabel7 = babel6toBabel7;
8
8
 
9
- var _traverse = _interopRequireDefault(require("@babel/traverse"));
9
+ function _traverse() {
10
+ const data = _interopRequireDefault(require("@babel/traverse"));
11
+
12
+ _traverse = function () {
13
+ return data;
14
+ };
15
+
16
+ return data;
17
+ }
10
18
 
11
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
20
 
@@ -42,7 +50,7 @@ function babel7toBabel6(ast) {
42
50
  }
43
51
  }
44
52
  };
45
- (0, _traverse.default)(ast, {
53
+ (0, _traverse().default)(ast, {
46
54
  enter(path) {
47
55
  if (path.node.variance && path.node.variance.type === 'Variance') {
48
56
  path.node.variance = path.node.variance.kind;
@@ -85,7 +93,7 @@ function babel6toBabel7(ast) {
85
93
  node.type = 'RestElement';
86
94
  }
87
95
  };
88
- (0, _traverse.default)(ast, {
96
+ (0, _traverse().default)(ast, {
89
97
  enter(path) {
90
98
  if (path.node.variance && typeof path.node.variance === 'string') {
91
99
  path.node.variance = {
package/lib/babel7.js CHANGED
@@ -5,61 +5,116 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = babel7;
7
7
 
8
- var _package = _interopRequireDefault(require("../package.json"));
8
+ function _assert() {
9
+ const data = _interopRequireDefault(require("assert"));
9
10
 
10
- var _assert = _interopRequireDefault(require("assert"));
11
+ _assert = function () {
12
+ return data;
13
+ };
11
14
 
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ return data;
16
+ }
17
+
18
+ function internalBabelCore() {
19
+ const data = _interopRequireWildcard(require("@babel/core"));
20
+
21
+ internalBabelCore = function () {
22
+ return data;
23
+ };
24
+
25
+ return data;
26
+ }
27
+
28
+ function _utils() {
29
+ const data = require("@parcel/utils");
30
+
31
+ _utils = function () {
32
+ return data;
33
+ };
34
+
35
+ return data;
36
+ }
37
+
38
+ function _babelAstUtils() {
39
+ const data = require("@parcel/babel-ast-utils");
40
+
41
+ _babelAstUtils = function () {
42
+ return data;
43
+ };
13
44
 
14
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
45
+ return data;
46
+ }
15
47
 
16
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
48
+ var _package = _interopRequireDefault(require("../package.json"));
49
+
50
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
17
51
 
18
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
52
+ 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; }
53
+
54
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
55
 
20
56
  const transformerVersion = _package.default.version;
21
- (0, _assert.default)(typeof transformerVersion === 'string');
57
+ (0, _assert().default)(typeof transformerVersion === 'string');
22
58
 
23
- async function babel7(asset, options, babelOptions, additionalPlugins = []) {
24
- // If this is an internally generated config, use our internal @babel/core,
25
- // otherwise require a local version from the package we're compiling.
26
- let babel = babelOptions.internal ? require('@babel/core') : await options.packageManager.require('@babel/core', asset.filePath);
59
+ async function babel7(opts) {
60
+ var _babelOptions$config$, _babelOptions$config$2, _babelOptions$syntaxP;
27
61
 
28
- let config = _objectSpread({}, babelOptions.config, {
62
+ let {
63
+ asset,
64
+ options,
65
+ babelOptions,
66
+ additionalPlugins = []
67
+ } = opts;
68
+ const babelCore = babelOptions.internal ? internalBabelCore() : await options.packageManager.require('@babel/core', asset.filePath, {
69
+ range: '^7.12.0',
70
+ saveDev: true,
71
+ shouldAutoInstall: options.shouldAutoInstall
72
+ });
73
+ let config = { ...babelOptions.config,
29
74
  plugins: additionalPlugins.concat(babelOptions.config.plugins),
30
75
  code: false,
31
76
  ast: true,
32
77
  filename: asset.filePath,
33
78
  babelrc: false,
34
79
  configFile: false,
35
- parserOpts: _objectSpread({}, babelOptions.config.parserOpts, {
80
+ parserOpts: { ...babelOptions.config.parserOpts,
81
+ sourceFilename: (0, _utils().relativeUrl)(options.projectRoot, asset.filePath),
36
82
  allowReturnOutsideFunction: true,
37
83
  strictMode: false,
38
84
  sourceType: 'module',
39
- plugins: ['dynamicImport']
40
- }),
85
+ plugins: [...((_babelOptions$config$ = (_babelOptions$config$2 = babelOptions.config.parserOpts) === null || _babelOptions$config$2 === void 0 ? void 0 : _babelOptions$config$2.plugins) !== null && _babelOptions$config$ !== void 0 ? _babelOptions$config$ : []), ...((_babelOptions$syntaxP = babelOptions.syntaxPlugins) !== null && _babelOptions$syntaxP !== void 0 ? _babelOptions$syntaxP : []), // Applied by preset-env
86
+ 'classProperties', 'classPrivateProperties', 'classPrivateMethods', 'exportDefaultFrom' // 'topLevelAwait'
87
+ ]
88
+ },
41
89
  caller: {
42
90
  name: 'parcel',
43
91
  version: transformerVersion,
44
- targets: JSON.stringify(babelOptions.targets)
92
+ targets: JSON.stringify(babelOptions.targets),
93
+ outputFormat: asset.env.outputFormat
45
94
  }
46
- });
47
-
48
- let code = await asset.getCode();
95
+ };
96
+ let ast = await asset.getAST();
49
97
  let res;
50
98
 
51
- if (asset.ast) {
52
- res = babel.transformFromAstSync(asset.ast.program, code, config);
99
+ if (ast) {
100
+ res = await babelCore.transformFromAstAsync(ast.program, asset.isASTDirty() ? undefined : await asset.getCode(), config);
53
101
  } else {
54
- res = babel.transformSync(code, config);
102
+ res = await babelCore.transformAsync(await asset.getCode(), config);
103
+
104
+ if (res.ast) {
105
+ let map = await asset.getMap();
106
+
107
+ if (map) {
108
+ (0, _babelAstUtils().remapAstLocations)(res.ast, map);
109
+ }
110
+ }
55
111
  }
56
112
 
57
113
  if (res.ast) {
58
- return {
114
+ asset.setAST({
59
115
  type: 'babel',
60
116
  version: '7.0.0',
61
- program: res.ast,
62
- isDirty: true
63
- };
117
+ program: res.ast
118
+ });
64
119
  }
65
120
  }