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.
		
		
		
		
		
			
		
			
				
					
					
						
							72 lines
						
					
					
						
							2.9 KiB
						
					
					
				
			
		
		
	
	
							72 lines
						
					
					
						
							2.9 KiB
						
					
					
				function resolveModuleName(request, issuer, compilerOptions, moduleResolutionHost, parentResolver) { | 
						|
  const pnp = require(`pnpapi`); | 
						|
 | 
						|
  const [, prefix = ``, packageName = ``, rest] = request.match(/^(!(?:.*!)+)?((?!\.{0,2}\/)(?:@[^\/]+\/)?[^\/]+)?(.*)/); | 
						|
 | 
						|
  let failedLookupLocations = []; | 
						|
 | 
						|
  // First we try the resolution on "@types/package-name" starting from the project root | 
						|
  if (packageName) { | 
						|
    const typesPackagePath = `@types/${packageName.replace(/\//g, `__`)}${rest}`; | 
						|
 | 
						|
    let unqualified; | 
						|
    try { | 
						|
      unqualified = pnp.resolveToUnqualified(typesPackagePath, issuer, {considerBuiltins: false}); | 
						|
    } catch (error) {} | 
						|
 | 
						|
    if (unqualified) { | 
						|
      // TypeScript checks whether the directory of the candidate is a directory | 
						|
      // which may cause issues w/ zip loading (since the zip archive is still | 
						|
      // reported as a file). To workaround this we add a trailing slash, which | 
						|
      // causes TypeScript to assume the parent is a directory. | 
						|
      if (moduleResolutionHost.directoryExists && moduleResolutionHost.directoryExists(unqualified)) | 
						|
        unqualified += `/`; | 
						|
 | 
						|
      const finalResolution = parentResolver(unqualified, issuer, compilerOptions, moduleResolutionHost); | 
						|
 | 
						|
      if (finalResolution.resolvedModule || finalResolution.resolvedTypeReferenceDirective) { | 
						|
        return finalResolution; | 
						|
      } else { | 
						|
        failedLookupLocations = failedLookupLocations.concat(finalResolution.failedLookupLocations); | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  // Then we try on "package-name", this time starting from the package that makes the request | 
						|
  if (true) { | 
						|
    const regularPackagePath = `${packageName || ``}${rest}`; | 
						|
 | 
						|
    let unqualified; | 
						|
    try { | 
						|
      unqualified = pnp.resolveToUnqualified(regularPackagePath, issuer, {considerBuiltins: false}); | 
						|
    } catch (error) {} | 
						|
 | 
						|
    if (unqualified) { | 
						|
      // TypeScript checks whether the directory of the candidate is a directory | 
						|
      // which may cause issues w/ zip loading (since the zip archive is still | 
						|
      // reported as a file). To workaround this we add a trailing slash, which | 
						|
      // causes TypeScript to assume the parent is a directory. | 
						|
      if (moduleResolutionHost.directoryExists && moduleResolutionHost.directoryExists(unqualified)) | 
						|
        unqualified += `/`; | 
						|
 | 
						|
      const finalResolution = parentResolver(unqualified, issuer, compilerOptions, moduleResolutionHost); | 
						|
 | 
						|
      if (finalResolution.resolvedModule || finalResolution.resolvedTypeReferenceDirective) { | 
						|
        return finalResolution; | 
						|
      } else { | 
						|
        failedLookupLocations = failedLookupLocations.concat(finalResolution.failedLookupLocations); | 
						|
      } | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return { | 
						|
    resolvedModule: undefined, | 
						|
    resolvedTypeReferenceDirective: undefined, | 
						|
    failedLookupLocations, | 
						|
  }; | 
						|
} | 
						|
 | 
						|
module.exports.resolveModuleName = process.versions.pnp | 
						|
  ? resolveModuleName | 
						|
  : (moduleName, containingFile, compilerOptions, compilerHost, resolveModuleName) => | 
						|
      resolveModuleName(moduleName, containingFile, compilerOptions, compilerHost);
 | 
						|
 |