public TsFileAdditionalInfo?CheckAdd(string fullNameWithExtension, FileCompilationType compilationType) { if (!Result.Path2FileInfo.TryGetValue(fullNameWithExtension, out var info)) { var fc = Owner.DiskCache.TryGetItem(fullNameWithExtension) as IFileCache; if (fc == null || fc.IsInvalid) { return(null); } info = TsFileAdditionalInfo.Create(fc, Owner.DiskCache); info.Type = compilationType; MainResult.MergeCommonSourceDirectory(fc.FullPath); Result.Path2FileInfo.Add(fullNameWithExtension, info); } else { if (info.Owner.IsInvalid) { Result.Path2FileInfo.Remove(fullNameWithExtension); return(null); } } if (!ToCheck.Contains(fullNameWithExtension)) { ToCheck.Add(fullNameWithExtension); } if (info.Type == FileCompilationType.Unknown) { info.Type = compilationType; } if (info.Type == FileCompilationType.JavaScriptAsset) { if (Result.JavaScriptAssets.AddUnique(info) && _noDependencyCheck) { _noDependencyCheck = false; } } return(info); }
public TsFileAdditionalInfo?CrawlFile(string fileName) { if (!Result.Path2FileInfo.TryGetValue(fileName, out var info)) { if (_noDependencyCheck) { _noDependencyCheck = false; } var fileCache = Owner.DiskCache.TryGetItem(fileName) as IFileCache; if (fileCache == null || fileCache.IsInvalid) { if (BuildCtx.Verbose) { Owner.Logger.Warn("Crawl skipping missing file " + fileName); } return(null); } info = TsFileAdditionalInfo.Create(fileCache, Owner.DiskCache); info.Type = FileCompilationType.Unknown; Result.Path2FileInfo.Add(fileName, info); } else { if (info.Owner.IsInvalid) { if (BuildCtx.Verbose) { Owner.Logger.Warn("Crawl skipping missing file " + fileName); } return(null); } } if (_noDependencyCheck) { if (info.IterationId != IterationId) { info.IterationId = IterationId; CrawlInfo(info); } } else { if (info.Type == FileCompilationType.Unknown) { if (IsDts(fileName)) { info.Type = FileCompilationType.TypeScriptDefinition; } else if (IsTsOrTsx(fileName)) { info.Type = FileCompilationType.TypeScript; } else { var ext = PathUtils.GetExtension(fileName); if (ext.SequenceEqual("css")) { info.Type = FileCompilationType.Css; } else if (ext.SequenceEqual("js") || ext.SequenceEqual("jsx")) { info.Type = FileCompilationType.EsmJavaScript; } } } if (info.IterationId != IterationId) { info.IterationId = IterationId; CrawlInfo(info); } foreach (var dep in info.Dependencies) { CheckAdd(dep, FileCompilationType.Unknown); } } return(info); }