| | |
| | | // loader.context seems to work fine on Linux / Mac regardless causes problems for @types resolution on Windows for TypeScript < 2.3 |
| | | const getCurrentDirectory = () => loader.context; |
| | | // make a (sync) resolver that follows webpack's rules |
| | | const resolveSync = resolver_1.makeResolver(loader._compiler.options); |
| | | const resolveSync = (0, resolver_1.makeResolver)(loader._compiler.options); |
| | | const moduleResolutionHost = { |
| | | trace: logData => instance.log.log(logData), |
| | | fileExists, |
| | |
| | | getCurrentDirectory, |
| | | getDirectories, |
| | | readDirectory, |
| | | useCaseSensitiveFileNames: () => utils_1.useCaseSensitiveFileNames(compiler, instance.loaderOptions), |
| | | useCaseSensitiveFileNames: () => (0, utils_1.useCaseSensitiveFileNames)(compiler, instance.loaderOptions), |
| | | getNewLine: () => newLine, |
| | | getDefaultLibFileName: options => compiler.getDefaultLibFilePath(options), |
| | | }; |
| | |
| | | return makeResolvers(compiler, compilerOptions, moduleResolutionHost, customResolveTypeReferenceDirective, customResolveModuleName, resolveSync, appendTsTsxSuffixesIfRequired, scriptRegex, instance); |
| | | function readFile(filePath, encoding) { |
| | | return (instance.compiler.sys.readFile(filePath, encoding) || |
| | | utils_1.fsReadFile(filePath, encoding)); |
| | | (0, utils_1.fsReadFile)(filePath, encoding)); |
| | | } |
| | | function directoryExists(directoryName) { |
| | | return compiler.sys.directoryExists(directoryName); |
| | |
| | | function makeServicesHost(scriptRegex, loader, instance, projectReferences) { |
| | | const { compiler, compilerOptions, files, filePathKeyMapper } = instance; |
| | | const { moduleResolutionHost, resolveModuleNames, resolveTypeReferenceDirectives, } = makeResolversAndModuleResolutionHost(scriptRegex, loader, instance, filePathToCheck => compiler.sys.fileExists(filePathToCheck) || |
| | | utils_1.fsReadFile(filePathToCheck) !== undefined, instance.loaderOptions.experimentalFileCaching); |
| | | (0, utils_1.fsReadFile)(filePathToCheck) !== undefined, instance.loaderOptions.experimentalFileCaching); |
| | | const servicesHost = Object.assign(Object.assign({ getProjectVersion: () => `${instance.version}`, getProjectReferences: () => projectReferences, getScriptFileNames: () => [...files.values()] |
| | | .map(({ fileName }) => fileName) |
| | | .filter(filePath => filePath.match(scriptRegex)), getScriptVersion: (fileName) => { |
| | |
| | | const resolveModuleName = makeResolveModuleName(compiler, compilerOptions, moduleResolutionHost, customResolveModuleName, instance); |
| | | const resolveModuleNames = (moduleNames, containingFile, _reusedNames, redirectedReference) => { |
| | | const resolvedModules = moduleNames.map(moduleName => resolveModule(resolveSync, resolveModuleName, appendTsTsxSuffixesIfRequired, scriptRegex, moduleName, containingFile, redirectedReference)); |
| | | utils_1.populateDependencyGraph(resolvedModules, instance, containingFile); |
| | | (0, utils_1.populateDependencyGraph)(resolvedModules, instance, containingFile); |
| | | return resolvedModules; |
| | | }; |
| | | const resolveTypeReferenceDirective = makeResolveTypeReferenceDirective(compiler, compilerOptions, moduleResolutionHost, customResolveTypeReferenceDirective, instance); |
| | | const resolveTypeReferenceDirectives = (typeDirectiveNames, containingFile, redirectedReference) => typeDirectiveNames.map(directive => resolveTypeReferenceDirective(directive, containingFile, redirectedReference).resolvedTypeReferenceDirective); |
| | | const resolveTypeReferenceDirectives = (typeDirectiveNames, containingFile, redirectedReference, options, containingFileMode // new impliedNodeFormat is accepted by compilerHost |
| | | ) => typeDirectiveNames.map(directive => resolveTypeReferenceDirective(directive, containingFile, options, redirectedReference, containingFileMode).resolvedTypeReferenceDirective); |
| | | return { |
| | | resolveTypeReferenceDirectives, |
| | | resolveModuleNames, |
| | |
| | | close: () => { |
| | | const existing = callbacks.get(key); |
| | | if (existing !== undefined) { |
| | | utils_1.unorderedRemoveItem(existing.callbacks, callback); |
| | | (0, utils_1.unorderedRemoveItem)(existing.callbacks, callback); |
| | | if (!existing.callbacks.length) { |
| | | callbacks.delete(key); |
| | | } |
| | |
| | | : x; |
| | | } |
| | | function createGetCanonicalFileName(instance) { |
| | | return utils_1.useCaseSensitiveFileNames(instance.compiler, instance.loaderOptions) |
| | | return (0, utils_1.useCaseSensitiveFileNames)(instance.compiler, instance.loaderOptions) |
| | | ? identity |
| | | : toFileNameLowerCase; |
| | | } |
| | |
| | | }, clearTimeout: _timeoutId => { |
| | | timeoutId = undefined; |
| | | }, getParsedCommandLine: file => { |
| | | const config = config_1.getParsedCommandLine(compiler, instance.loaderOptions, file); |
| | | const config = (0, config_1.getParsedCommandLine)(compiler, instance.loaderOptions, file); |
| | | configFileInfo.set(filePathKeyMapper(file), { config }); |
| | | return config; |
| | | }, writtenFiles, |
| | |
| | | configInfo.outputFileNames = new Map(); |
| | | configInfo.config.fileNames.forEach(inputFile => configInfo.outputFileNames.set(filePathKeyMapper(inputFile), { |
| | | inputFileName: path.resolve(inputFile), |
| | | outputNames: instances_1.getOutputFileNames(instance, configInfo.config, inputFile), |
| | | outputNames: (0, instances_1.getOutputFileNames)(instance, configInfo.config, inputFile), |
| | | })); |
| | | configInfo.tsbuildInfoFile = instance.compiler |
| | | .getTsBuildInfoEmitOutputFilePath |
| | |
| | | const solutionErrors = []; |
| | | if (instance.solutionBuilderHost && |
| | | instance.solutionBuilderHost.diagnostics.transpileErrors.length) { |
| | | instance.solutionBuilderHost.diagnostics.transpileErrors.forEach(([filePath, errors]) => solutionErrors.push(...utils_1.formatErrors(errors, instance.loaderOptions, instance.colors, instance.compiler, { file: filePath ? undefined : 'tsconfig.json' }, context))); |
| | | instance.solutionBuilderHost.diagnostics.transpileErrors.forEach(([filePath, errors]) => solutionErrors.push(...(0, utils_1.formatErrors)(errors, instance.loaderOptions, instance.colors, instance.compiler, { file: filePath ? undefined : 'tsconfig.json' }, context))); |
| | | } |
| | | return solutionErrors; |
| | | } |
| | |
| | | var _a, _b; |
| | | if (customResolveTypeReferenceDirective === undefined) { |
| | | // Until the api is published |
| | | if (compiler.createTypeReferenceDirectiveResolutionCache && |
| | | if (compiler.createTypeReferenceDirectiveResolutionCache !== undefined && |
| | | !instance.typeReferenceResolutionCache) { |
| | | instance.typeReferenceResolutionCache = compiler.createTypeReferenceDirectiveResolutionCache(moduleResolutionHost.getCurrentDirectory(), createGetCanonicalFileName(instance), instance.compilerOptions, (_b = (_a = instance.moduleResolutionCache) === null || _a === void 0 ? void 0 : _a.getPackageJsonInfoCache) === null || _b === void 0 ? void 0 : _b.call(_a)); |
| | | } |
| | | return (directive, containingFile, redirectedReference) => |
| | | // Until the api is published |
| | | compiler.resolveTypeReferenceDirective(directive, containingFile, compilerOptions, moduleResolutionHost, redirectedReference, instance.typeReferenceResolutionCache); |
| | | return (typeDirectiveName, containingFile, options, redirectedReference, containingFileMode) => { |
| | | // Copy-pasted from https://github.com/TypeStrong/ts-node/blob/9f789d0d91c6eba30ac7f7aad45194a23b44f159/src/resolver-functions.ts#L139 |
| | | const nameIsString = typeof typeDirectiveName === 'string'; |
| | | const mode = nameIsString |
| | | ? undefined |
| | | : compiler.getModeForFileReference(typeDirectiveName, containingFileMode); |
| | | const strName = nameIsString |
| | | ? typeDirectiveName |
| | | : typeDirectiveName.fileName.toLowerCase(); |
| | | return compiler.resolveTypeReferenceDirective(strName, containingFile, options, moduleResolutionHost, redirectedReference, undefined, mode); |
| | | }; |
| | | } |
| | | return (directive, containingFile) => customResolveTypeReferenceDirective(directive, containingFile, compilerOptions, moduleResolutionHost, compiler.resolveTypeReferenceDirective); |
| | | return (directive, containingFile) => customResolveTypeReferenceDirective(directive, // unsure whether we should evolve this further |
| | | containingFile, compilerOptions, moduleResolutionHost, compiler.resolveTypeReferenceDirective); |
| | | } |
| | | function isJsImplementationOfTypings(resolvedModule, tsResolution) { |
| | | return (resolvedModule.resolvedFileName.endsWith('js') && |