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.
		
		
		
		
		
			
		
			
				
					80 lines
				
				2.2 KiB
			
		
		
			
		
	
	
					80 lines
				
				2.2 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | 
 | ||
|  | exports.__esModule = true; | ||
|  | exports.has = has; | ||
|  | exports.laterLogMissing = laterLogMissing; | ||
|  | exports.logMissing = logMissing; | ||
|  | exports.resolve = resolve; | ||
|  | 
 | ||
|  | var _path = _interopRequireDefault(require("path")); | ||
|  | 
 | ||
|  | var _lodash = _interopRequireDefault(require("lodash.debounce")); | ||
|  | 
 | ||
|  | var _resolve = _interopRequireDefault(require("resolve")); | ||
|  | 
 | ||
|  | var _module = require("module"); | ||
|  | 
 | ||
|  | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
|  | 
 | ||
|  | const nativeRequireResolve = parseFloat(process.versions.node) >= 8.9; | ||
|  | 
 | ||
|  | // eslint-disable-line
 | ||
|  | function myResolve(name, basedir) { | ||
|  |   if (nativeRequireResolve) { | ||
|  |     return require.resolve(name, { | ||
|  |       paths: [basedir] | ||
|  |     }).replace(/\\/g, "/"); | ||
|  |   } else { | ||
|  |     return _resolve.default.sync(name, { | ||
|  |       basedir | ||
|  |     }).replace(/\\/g, "/"); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | function resolve(dirname, moduleName, absoluteImports) { | ||
|  |   if (absoluteImports === false) return moduleName; | ||
|  |   let basedir = dirname; | ||
|  | 
 | ||
|  |   if (typeof absoluteImports === "string") { | ||
|  |     basedir = _path.default.resolve(basedir, absoluteImports); | ||
|  |   } | ||
|  | 
 | ||
|  |   try { | ||
|  |     return myResolve(moduleName, basedir); | ||
|  |   } catch (err) { | ||
|  |     if (err.code !== "MODULE_NOT_FOUND") throw err; | ||
|  |     throw Object.assign(new Error(`Failed to resolve "${moduleName}" relative to "${dirname}"`), { | ||
|  |       code: "BABEL_POLYFILL_NOT_FOUND", | ||
|  |       polyfill: moduleName, | ||
|  |       dirname | ||
|  |     }); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | function has(basedir, name) { | ||
|  |   try { | ||
|  |     myResolve(name, basedir); | ||
|  |     return true; | ||
|  |   } catch (_unused) { | ||
|  |     return false; | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | function logMissing(missingDeps) { | ||
|  |   if (missingDeps.size === 0) return; | ||
|  |   const deps = Array.from(missingDeps).sort().join(" "); | ||
|  |   console.warn("\nSome polyfills have been added but are not present in your dependencies.\n" + "Please run one of the following commands:\n" + `\tnpm install --save ${deps}\n` + `\tyarn add ${deps}\n`); | ||
|  |   process.exitCode = 1; | ||
|  | } | ||
|  | 
 | ||
|  | let allMissingDeps = new Set(); | ||
|  | const laterLogMissingDependencies = (0, _lodash.default)(() => { | ||
|  |   logMissing(allMissingDeps); | ||
|  |   allMissingDeps = new Set(); | ||
|  | }, 100); | ||
|  | 
 | ||
|  | function laterLogMissing(missingDeps) { | ||
|  |   if (missingDeps.size === 0) return; | ||
|  |   missingDeps.forEach(name => allMissingDeps.add(name)); | ||
|  |   laterLogMissingDependencies(); | ||
|  | } |