Skip to content

Commit

Permalink
Remove LegacyListFiles, include .mts extension in addition to .ts and…
Browse files Browse the repository at this point in the history
… .tsx
  • Loading branch information
volkanceylan committed Sep 8, 2024
1 parent 2155f94 commit 53dc353
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 55 deletions.
2 changes: 1 addition & 1 deletion packages/sleekgrid
72 changes: 18 additions & 54 deletions src/Serenity.Net.CodeGenerator/TypeScript/TSConfigHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@ public static IEnumerable<string> ListFiles(
IFileSystem fileSystem, string configPath, out TSConfig tsConfig,
CancellationToken cancellationToken = default)
{
tsConfig = Read(fileSystem, configPath);
if (tsConfig is null)
return LegacyListFiles(fileSystem, configPath, cancellationToken);
tsConfig = Read(fileSystem, configPath) ??
new TSConfig() { Include = ["Modules"] };

return ListFiles(tsConfig, fileSystem, fileSystem.GetDirectoryName(configPath), cancellationToken);
}
Expand All @@ -29,15 +28,7 @@ private static IEnumerable<string> ListFiles(TSConfig config,
fileSystem.Combine(rootDir, PathHelper.ToPath(x))));
}

var includePatterns = config.Include;
if (includePatterns == null)
{
if (config.Exclude == null || config.Exclude.Length == 0)
return LegacyListFiles(fileSystem,
fileSystem.Combine(rootDir, "tsconfig.json"), cancellationToken);

includePatterns = ["**/*"];
}
var includePatterns = config.Include ?? ["**/*"];

var typeRoots = config.CompilerOptions?.TypeRoots?.IsEmptyOrNull() != false ?
["./node_modules/@types"] : config.CompilerOptions.TypeRoots;
Expand Down Expand Up @@ -222,6 +213,9 @@ private static IEnumerable<string> GetFilesMatchingPatterns(IFileSystem fileSyst
{
List<string> result = [];

if (!fileSystem.DirectoryExists(rootDir))
return result;

includePatterns = includePatterns.Select(NormalizePattern)
.Where(x => !string.IsNullOrEmpty(x)).ToArray();

Expand Down Expand Up @@ -258,28 +252,28 @@ private static IEnumerable<string> GetFilesMatchingPatterns(IFileSystem fileSyst
foreach (var s in scanFolders)
scanFoldersSet.Add(s);

enumerated = enumerated.Concat(fileSystem.GetFiles(rootDir, "*.ts"));
enumerated = enumerated.Concat(fileSystem.GetFiles(rootDir, "*.tsx"));
enumerated = enumerated.Concat(fileSystem.GetFiles(rootDir, tsMask).Where(HasTSExtension));

foreach (var directory in fileSystem.GetDirectories(rootDir))
{
var directoryName = fileSystem.GetFileName(directory);
if (!scanFoldersSet.Contains(directoryName))
continue;

enumerated = enumerated.Concat(fileSystem.GetFiles(directory, "*.ts", recursive: true));
enumerated = enumerated.Concat(fileSystem.GetFiles(directory, "*.tsx", recursive: true));
enumerated = enumerated.Concat(fileSystem.GetFiles(directory, tsMask, recursive: true).Where(HasTSExtension));
}
enumerated = enumerated.ToArray();
}
else
{
enumerated = fileSystem.GetFiles(rootDir, "*.ts", recursive: true);
enumerated = fileSystem.GetFiles(rootDir, tsMask, recursive: true).Where(HasTSExtension);
}

var byFilename = new HashSet<string>(enumerated, StringComparer.OrdinalIgnoreCase);

enumerated = enumerated.Where(x =>
!x.EndsWith(".d.ts", StringComparison.OrdinalIgnoreCase) ||
!fileSystem.FileExists(x[..^".d.ts".Length] + ".ts"));
!byFilename.Contains(x[..^5] + ".ts"));

var includeGlob = new IO.GlobFilter(includePatterns.Select(x => '/' + x));
var excludeGlob = new IO.GlobFilter(excludePatterns.Select(x => '/' + x));
Expand All @@ -292,42 +286,12 @@ private static IEnumerable<string> GetFilesMatchingPatterns(IFileSystem fileSyst
return result.Concat(enumerated);
}

private static IEnumerable<string> LegacyListFiles(IFileSystem fileSystem,
string tsConfigPath, CancellationToken cancellationToken)
{
// legacy apps
var projectDir = fileSystem.GetDirectoryName(tsConfigPath);
var directories = new[]
{
fileSystem.Combine(projectDir, @"Modules"),
fileSystem.Combine(projectDir, @"Imports"),
fileSystem.Combine(projectDir, @"typings", "serenity"),
fileSystem.Combine(projectDir, @"wwwroot", "Scripts", "serenity")
}.Where(x => fileSystem.DirectoryExists(x));

cancellationToken.ThrowIfCancellationRequested();

var files = directories.SelectMany(x =>
fileSystem.GetFiles(x, "*.ts", recursive: true))
.Where(x => !x.EndsWith(".d.ts", StringComparison.OrdinalIgnoreCase) ||
fileSystem.GetFileName(x).StartsWith("Serenity.", StringComparison.OrdinalIgnoreCase) ||
fileSystem.GetFileName(x).StartsWith("Serenity-", StringComparison.OrdinalIgnoreCase));

cancellationToken.ThrowIfCancellationRequested();

var corelib = files.Where(x => string.Equals(fileSystem.GetFileName(x),
"Serenity.CoreLib.d.ts", StringComparison.OrdinalIgnoreCase));

static bool corelibUnderTypings(string x) =>
x.Replace('\\', '/').EndsWith("/typings/serenity/Serenity.CoreLib.d.ts",
StringComparison.OrdinalIgnoreCase);
const string tsMask = "*.*ts?";

if (corelib.Count() > 1 &&
corelib.Any(x => !corelibUnderTypings(x)))
{
files = files.Where(x => !corelibUnderTypings(x));
}

return files.OrderBy(x => x);
public static bool HasTSExtension(string path)
{
return path.EndsWith(".ts", StringComparison.OrdinalIgnoreCase) ||
path.EndsWith(".tsx", StringComparison.OrdinalIgnoreCase) ||
path.EndsWith(".mts", StringComparison.OrdinalIgnoreCase);
}
}

0 comments on commit 53dc353

Please sign in to comment.