UNPKG

1.21 kBJavaScriptView Raw
1// @flow strict-local
2
3import {generate, babelErrorEnhancer} from '@parcel/babel-ast-utils';
4import {Transformer} from '@parcel/plugin';
5import semver from 'semver';
6import babel7 from './babel7';
7import {load} from './config';
8
9export default (new Transformer({
10 async loadConfig({config, options, logger}) {
11 await load(config, options, logger);
12 },
13
14 canReuseAST({ast}) {
15 return ast.type === 'babel' && semver.satisfies(ast.version, '^7.0.0');
16 },
17
18 async transform({asset, config, options}) {
19 // TODO: Provide invalidateOnEnvChange on config?
20 asset.invalidateOnEnvChange('BABEL_ENV');
21 asset.invalidateOnEnvChange('NODE_ENV');
22
23 // TODO: come up with a better name
24 try {
25 if (config?.config) {
26 if (
27 asset.meta.babelPlugins != null &&
28 Array.isArray(asset.meta.babelPlugins)
29 ) {
30 await babel7(asset, options, config, asset.meta.babelPlugins);
31 } else {
32 await babel7(asset, options, config);
33 }
34 }
35
36 return [asset];
37 } catch (e) {
38 throw await babelErrorEnhancer(e, asset);
39 }
40 },
41
42 generate({asset, ast, options}) {
43 return generate({asset, ast, options});
44 },
45}): Transformer);