11import * as path from 'path' ;
22import * as babel from '@babel/core' ;
3+ import type { BuildConfig } from '@granite-js/plugin-core' ;
34import { AsyncTransformStep } from '../../../../transformer/TransformPipeline' ;
45import { defineStepName } from '../../../../utils/defineStepName' ;
56
67interface FullyTransformStepConfig {
78 dev : boolean ;
9+ platform : string ;
810 additionalBabelOptions ?: babel . TransformOptions ;
11+ INTERNAL__babelOptions ?: BuildConfig [ 'INTERNAL__babelOptions' ] ;
912}
1013
1114export function createFullyTransformStep ( {
1215 dev,
16+ platform,
1317 additionalBabelOptions,
18+ INTERNAL__babelOptions,
1419} : FullyTransformStepConfig ) : AsyncTransformStep {
1520 const baseOptions : babel . TransformOptions = {
1621 configFile : additionalBabelOptions ?. configFile || false ,
@@ -59,7 +64,7 @@ export function createFullyTransformStep({
5964 } ;
6065
6166 const fullyTransformStep : AsyncTransformStep = async function fullyTransform ( code , args ) {
62- const babelOptions = babel . loadOptions ( {
67+ const babelOptions : babel . TransformOptions = {
6368 minified : false ,
6469 compact : false ,
6570 babelrc : false ,
@@ -72,17 +77,21 @@ export function createFullyTransformStep({
7277 name : 'mpack-fully-transform-plugin' ,
7378 supportsStaticESM : true ,
7479 } ,
75- } ) as babel . TransformOptions | null ;
80+ } ;
7681
77- if ( ! babelOptions ) {
82+ const resolvedBabelOptions = babel . loadOptions (
83+ INTERNAL__babelOptions ? await INTERNAL__babelOptions ( { platform, dev } , babelOptions ) : babelOptions
84+ ) as babel . TransformOptions | null ;
85+
86+ if ( ! resolvedBabelOptions ) {
7887 return { code } ;
7988 }
8089
81- if ( babelOptions . sourceMaps ) {
82- babelOptions . sourceFileName = path . basename ( args . path ) ;
90+ if ( resolvedBabelOptions . sourceMaps ) {
91+ resolvedBabelOptions . sourceFileName = path . basename ( args . path ) ;
8392 }
8493
85- const result = await babel . transformAsync ( code , babelOptions ) ;
94+ const result = await babel . transformAsync ( code , resolvedBabelOptions ) ;
8695
8796 if ( result ?. code != null ) {
8897 return { code : result . code } ;
0 commit comments