You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							46 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							46 lines
						
					
					
						
							1.5 KiB
						
					
					
				"use strict"; | 
						|
 | 
						|
const babel = require("@babel/core"); | 
						|
 | 
						|
module.exports = function injectCaller(opts, target) { | 
						|
  if (!supportsCallerOption()) return opts; | 
						|
  return Object.assign({}, opts, { | 
						|
    caller: Object.assign({ | 
						|
      name: "babel-loader", | 
						|
      // Provide plugins with insight into webpack target. | 
						|
      // https://github.com/babel/babel-loader/issues/787 | 
						|
      target, | 
						|
      // Webpack >= 2 supports ESM and dynamic import. | 
						|
      supportsStaticESM: true, | 
						|
      supportsDynamicImport: true, | 
						|
      // Webpack 5 supports TLA behind a flag. We enable it by default | 
						|
      // for Babel, and then webpack will throw an error if the experimental | 
						|
      // flag isn't enabled. | 
						|
      supportsTopLevelAwait: true | 
						|
    }, opts.caller) | 
						|
  }); | 
						|
}; // TODO: We can remove this eventually, I'm just adding it so that people have | 
						|
// a little time to migrate to the newer RCs of @babel/core without getting | 
						|
// hard-to-diagnose errors about unknown 'caller' options. | 
						|
 | 
						|
 | 
						|
let supportsCallerOptionFlag = undefined; | 
						|
 | 
						|
function supportsCallerOption() { | 
						|
  if (supportsCallerOptionFlag === undefined) { | 
						|
    try { | 
						|
      // Rather than try to match the Babel version, we just see if it throws | 
						|
      // when passed a 'caller' flag, and use that to decide if it is supported. | 
						|
      babel.loadPartialConfig({ | 
						|
        caller: undefined, | 
						|
        babelrc: false, | 
						|
        configFile: false | 
						|
      }); | 
						|
      supportsCallerOptionFlag = true; | 
						|
    } catch (err) { | 
						|
      supportsCallerOptionFlag = false; | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return supportsCallerOptionFlag; | 
						|
} |