Пример #1
0
 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;
         Result.CommonSourceDirectory = PathUtils.CommonDir(Result.CommonSourceDirectory, 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);
 }
Пример #2
0
        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);
        }