@@ -5,7 +5,7 @@ import { BUNDLED, HELPERS } from './constants.js';
55import bundledHelpersPlugin from './bundledHelpersPlugin.js' ;
66import preflightCheck from './preflightCheck.js' ;
77import transformCode from './transformCode.js' ;
8- import { addBabelPlugin , escapeRegExpCharacters , warnOnce , stripQuery } from './utils.js' ;
8+ import { addBabelPlugin , escapeRegExpCharacters , warnOnce } from './utils.js' ;
99
1010const unpackOptions = ( {
1111 extensions = babel . DEFAULT_EXTENSIONS ,
@@ -37,7 +37,7 @@ const warnAboutDeprecatedHelpersOption = ({ deprecatedOption, suggestion }) => {
3737 ) ;
3838} ;
3939
40- const unpackInputPluginOptions = ( { skipPreflightCheck = false , ...rest } , rollupVersion ) => {
40+ const unpackInputPluginOptions = ( { skipPreflightCheck = false , ...rest } ) => {
4141 if ( 'runtimeHelpers' in rest ) {
4242 warnAboutDeprecatedHelpersOption ( {
4343 deprecatedOption : 'runtimeHelpers' ,
@@ -63,8 +63,7 @@ const unpackInputPluginOptions = ({ skipPreflightCheck = false, ...rest }, rollu
6363 supportsStaticESM : true ,
6464 supportsDynamicImport : true ,
6565 supportsTopLevelAwait : true ,
66- // todo: remove version checks for 1.20 - 1.25 when we bump peer deps
67- supportsExportNamespaceFrom : ! rollupVersion . match ( / ^ 1 \. 2 [ 0 - 5 ] \. / ) ,
66+ supportsExportNamespaceFrom : true ,
6867 ...rest . caller
6968 }
7069 } ) ;
@@ -110,77 +109,76 @@ function createBabelInputPluginFactory(customCallback = returnObject) {
110109 overrides
111110 ) ;
112111
113- let babelHelpers ;
114- let babelOptions ;
115- let filter ;
116- let skipPreflightCheck ;
117- return {
118- name : 'babel' ,
119-
120- options ( ) {
121- // todo: remove options hook and hoist declarations when version checks are removed
122- let exclude ;
123- let include ;
124- let extensions ;
125- let customFilter ;
126-
127- ( {
128- exclude,
129- extensions,
130- babelHelpers,
131- include,
132- filter : customFilter ,
133- skipPreflightCheck,
134- ...babelOptions
135- } = unpackInputPluginOptions ( pluginOptionsWithOverrides , this . meta . rollupVersion ) ) ;
112+ const {
113+ exclude,
114+ extensions,
115+ babelHelpers,
116+ include,
117+ filter : customFilter ,
118+ skipPreflightCheck,
119+ ...babelOptions
120+ } = unpackInputPluginOptions ( pluginOptionsWithOverrides ) ;
121+
122+ const extensionRegExp = new RegExp (
123+ `(${ extensions . map ( escapeRegExpCharacters ) . join ( '|' ) } )(\\?.*)?(#.*)?$`
124+ ) ;
125+ if ( customFilter && ( include || exclude ) ) {
126+ throw new Error ( 'Could not handle include or exclude with custom filter together' ) ;
127+ }
128+ const userDefinedFilter =
129+ typeof customFilter === 'function' ? customFilter : createFilter ( include , exclude ) ;
130+ const filter = ( id , code ) => extensionRegExp . test ( id ) && userDefinedFilter ( id , code ) ;
136131
137- const extensionRegExp = new RegExp (
138- `(${ extensions . map ( escapeRegExpCharacters ) . join ( '|' ) } )$`
139- ) ;
140- if ( customFilter && ( include || exclude ) ) {
141- throw new Error ( 'Could not handle include or exclude with custom filter together' ) ;
142- }
143- const userDefinedFilter =
144- typeof customFilter === 'function' ? customFilter : createFilter ( include , exclude ) ;
145- filter = ( id ) => extensionRegExp . test ( stripQuery ( id ) . bareId ) && userDefinedFilter ( id ) ;
132+ const helpersFilter = { id : new RegExp ( `^${ escapeRegExpCharacters ( HELPERS ) } $` ) } ;
146133
147- return null ;
148- } ,
134+ return {
135+ name : 'babel' ,
149136
150- resolveId ( id ) {
151- if ( id !== HELPERS ) {
152- return null ;
137+ resolveId : {
138+ filter : helpersFilter ,
139+ handler ( id ) {
140+ if ( id !== HELPERS ) {
141+ return null ;
142+ }
143+ return id ;
153144 }
154- return id ;
155145 } ,
156146
157- load ( id ) {
158- if ( id !== HELPERS ) {
159- return null ;
147+ load : {
148+ filter : helpersFilter ,
149+ handler ( id ) {
150+ if ( id !== HELPERS ) {
151+ return null ;
152+ }
153+ return babel . buildExternalHelpers ( null , 'module' ) ;
160154 }
161- return babel . buildExternalHelpers ( null , 'module' ) ;
162155 } ,
163156
164- transform ( code , filename ) {
165- if ( ! filter ( filename ) ) return null ;
166- if ( filename === HELPERS ) return null ;
167-
168- return transformCode (
169- code ,
170- { ...babelOptions , filename } ,
171- overrides ,
172- customOptions ,
173- this ,
174- async ( transformOptions ) => {
175- if ( ! skipPreflightCheck ) {
176- await preflightCheck ( this , babelHelpers , transformOptions ) ;
157+ transform : {
158+ filter : {
159+ id : extensionRegExp
160+ } ,
161+ async handler ( code , filename ) {
162+ if ( ! ( await filter ( filename , code ) ) ) return null ;
163+ if ( filename === HELPERS ) return null ;
164+
165+ return transformCode (
166+ code ,
167+ { ...babelOptions , filename } ,
168+ overrides ,
169+ customOptions ,
170+ this ,
171+ async ( transformOptions ) => {
172+ if ( ! skipPreflightCheck ) {
173+ await preflightCheck ( this , babelHelpers , transformOptions ) ;
174+ }
175+
176+ return babelHelpers === BUNDLED
177+ ? addBabelPlugin ( transformOptions , bundledHelpersPlugin )
178+ : transformOptions ;
177179 }
178-
179- return babelHelpers === BUNDLED
180- ? addBabelPlugin ( transformOptions , bundledHelpersPlugin )
181- : transformOptions ;
182- }
183- ) ;
180+ ) ;
181+ }
184182 }
185183 } ;
186184 } ;
0 commit comments