Beispiel #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;
                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);
        }
Beispiel #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);
        }