From 4f3ac309dd5c3c9f2bc808f138c2724bb3fd9363 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 15 Nov 2025 00:36:03 +0000 Subject: [PATCH 01/11] Upgrade to .NET 10 - Updated all project files from net8.0 to net10.0 - Updated GitHub Actions workflow to use .NET 10.0.x - Updated Microsoft.Extensions.Hosting from 8.0.0 to 10.0.0 - Updated Microsoft.Extensions.Http from 8.0.0 to 10.0.0 --- .github/workflows/dotnet.yml | 2 +- .../NosCore.ParserInputGenerator.Launcher.csproj | 2 +- .../NosCore.ParserInputGenerator.csproj | 6 +++--- .../NosCore.ParserInputGenerator.Tests.csproj | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 9898233..f9120ee 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -16,7 +16,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v3 with: - dotnet-version: 7.0.x + dotnet-version: 10.0.x - name: Check Tag id: check-tag diff --git a/src/NosCore.ParserInputGenerator.Launcher/NosCore.ParserInputGenerator.Launcher.csproj b/src/NosCore.ParserInputGenerator.Launcher/NosCore.ParserInputGenerator.Launcher.csproj index 5b959e4..3325140 100644 --- a/src/NosCore.ParserInputGenerator.Launcher/NosCore.ParserInputGenerator.Launcher.csproj +++ b/src/NosCore.ParserInputGenerator.Launcher/NosCore.ParserInputGenerator.Launcher.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 true diff --git a/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj b/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj index fc59b78..89aa45b 100644 --- a/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj +++ b/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj @@ -1,7 +1,7 @@  - net8.0 + net10.0 latest favicon.ico true @@ -40,8 +40,8 @@ - - + + diff --git a/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj b/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj index b6a127d..e76aa42 100644 --- a/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj +++ b/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj @@ -1,7 +1,7 @@  - net8.0 + net10.0 true false From 1ae1efe3425cc57917acf44aabb3456f4b71a0e6 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 15 Nov 2025 00:48:38 +0000 Subject: [PATCH 02/11] Update NuGet packages to latest versions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Microsoft.NET.Test.Sdk: 17.8.0 → 17.12.0 - MSTest.TestAdapter: 3.1.1 → 3.6.3 - MSTest.TestFramework: 3.1.1 → 3.6.3 - coverlet.collector: 6.0.0 → 6.0.2 - Serilog: 3.1.1 → 4.2.0 --- .../NosCore.ParserInputGenerator.csproj | 2 +- .../NosCore.ParserInputGenerator.Tests.csproj | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj b/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj index 89aa45b..994d0a9 100644 --- a/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj +++ b/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj @@ -43,7 +43,7 @@ - + diff --git a/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj b/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj index e76aa42..1a0393e 100644 --- a/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj +++ b/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj @@ -7,10 +7,10 @@ - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive From 4ebfa19bc6fce9ef36c2a9a875e1f5a5e5e1aa21 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 15 Nov 2025 00:53:04 +0000 Subject: [PATCH 03/11] Fix GitHub Actions workflow deprecated syntax and actions - Updated actions/checkout from v2 to v4 - Updated actions/setup-dotnet from v3 to v4 - Replaced deprecated ::set-output with $GITHUB_OUTPUT - Replaced deprecated actions/upload-release-asset@v1 with softprops/action-gh-release@v2 - Removed jossef/action-latest-release-info action (no longer needed) --- .github/workflows/dotnet.yml | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index f9120ee..d4ec2e3 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -12,9 +12,9 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Setup .NET - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v4 with: dotnet-version: 10.0.x @@ -22,7 +22,7 @@ jobs: id: check-tag run: | if [[ v${{ github.event.ref }} =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo ::set-output name=match::true + echo "match=true" >> $GITHUB_OUTPUT fi - name: Run Unit Tests @@ -39,24 +39,13 @@ jobs: dotnet build -c Release dotnet pack -c Release -o /tmp/nupkgs -v m -p:IncludeSymbols=true -p:SymbolPackageFormat=snupkg dotnet nuget push /tmp/nupkgs/NosCore.ParserInputGenerator.${{github.event.ref}}.nupkg -s https://api.nuget.org/v3/index.json -k ${{secrets.NUGET_API_KEY}} - echo ::set-output name=ARTIFACT_PATH::/tmp/nupkgs/NosCore.ParserInputGenerator.${{github.event.ref}}.snupkg - echo ::set-output name=ARTIFACT_NAME::NosCore.ParserInputGenerator.${{github.event.ref}}.snupkg - - - name: Gets Latest Release - if: steps.check-tag.outputs.match == 'true' - id: latest_release_info - uses: jossef/action-latest-release-info@v1.1.0 - env: - GITHUB_TOKEN: ${{ secrets.REPO_TOKEN }} + echo "ARTIFACT_PATH=/tmp/nupkgs/NosCore.ParserInputGenerator.${{github.event.ref}}.snupkg" >> $GITHUB_OUTPUT + echo "ARTIFACT_NAME=NosCore.ParserInputGenerator.${{github.event.ref}}.snupkg" >> $GITHUB_OUTPUT - name: Upload Release Asset if: steps.check-tag.outputs.match == 'true' - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.REPO_TOKEN }} + uses: softprops/action-gh-release@v2 with: - upload_url: ${{ steps.latest_release_info.outputs.upload_url }} - asset_path: ${{ steps.build_artifact.outputs.ARTIFACT_PATH }} - asset_name: ${{ steps.build_artifact.outputs.ARTIFACT_NAME }} - asset_content_type: application/zip + files: ${{ steps.build_artifact.outputs.ARTIFACT_PATH }} + token: ${{ secrets.REPO_TOKEN }} From 365281ab59cddaf9059eb9c53024771a390b4d05 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 15 Nov 2025 01:01:29 +0000 Subject: [PATCH 04/11] Suppress MSTEST0037 analyzer warning - Added NoWarn directive for MSTEST0037 to prevent build errors - This analyzer rule suggests using Assert.AreEqual instead of Assert.IsTrue for equality checks - Currently no violations exist in the codebase, but this prevents future build failures --- .../NosCore.ParserInputGenerator.Tests.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj b/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj index 1a0393e..8aeca36 100644 --- a/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj +++ b/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj @@ -4,6 +4,7 @@ net10.0 true false + $(NoWarn);MSTEST0037 From 88b83da4088200ff614b976fd0ff1b5f068114a0 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 15 Nov 2025 01:03:40 +0000 Subject: [PATCH 05/11] Remove NoWarn directive for MSTEST0037 - No Assert.IsTrue violations exist in the codebase - The test file only contains an empty test method - Project should build cleanly without suppression --- .../NosCore.ParserInputGenerator.Tests.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj b/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj index 8aeca36..1a0393e 100644 --- a/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj +++ b/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj @@ -4,7 +4,6 @@ net10.0 true false - $(NoWarn);MSTEST0037 From a20bd189471bfeee01febe7756e507e1df0288a7 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 15 Nov 2025 01:16:28 +0000 Subject: [PATCH 06/11] Remove CS1591 NoWarn suppression - Removed NoWarn directive for CS1591 (missing XML documentation) - Project will now enforce XML documentation comments on all public APIs --- .../NosCore.ParserInputGenerator.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj b/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj index 994d0a9..4c14465 100644 --- a/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj +++ b/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj @@ -21,7 +21,6 @@ icon.png true true - CS1591 From 224da6032c85bdca03d02b00c6f902850253f0bb Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 15 Nov 2025 01:21:57 +0000 Subject: [PATCH 07/11] Add XML documentation to all public APIs Added comprehensive XML documentation comments to all public types, methods, properties, and members across the codebase to satisfy CS1591 requirements: - Downloader: IClientDownloader, ClientDownloader, ClientManifest, Entry - Extractor: IExtractor, Extractor - I18N: LogLanguage, LogLanguageKey - Launcher: Program, Worker, ParserInputGeneratorConfiguration This ensures the project builds cleanly with GenerateDocumentationFile enabled and TreatWarningsAsErrors set to true. --- .../ParserInputGeneratorConfiguration.cs | 3 ++ .../Program.cs | 14 +++++++- .../Worker.cs | 14 ++++++++ .../Downloader/ClientDownloader.cs | 12 +++++++ .../Downloader/ClientManifest.cs | 33 +++++++++++++++++++ .../Downloader/IClientDownloader.cs | 23 +++++++++++++ .../Extractor/Extractor.cs | 10 ++++++ .../Extractor/IExtractor.cs | 23 +++++++++++++ .../I18N/LogLanguage.cs | 20 +++++++++++ .../I18N/LogLanguageKey.cs | 18 ++++++++++ 10 files changed, 169 insertions(+), 1 deletion(-) diff --git a/src/NosCore.ParserInputGenerator.Launcher/Configuration/ParserInputGeneratorConfiguration.cs b/src/NosCore.ParserInputGenerator.Launcher/Configuration/ParserInputGeneratorConfiguration.cs index 876bc06..d64b632 100644 --- a/src/NosCore.ParserInputGenerator.Launcher/Configuration/ParserInputGeneratorConfiguration.cs +++ b/src/NosCore.ParserInputGenerator.Launcher/Configuration/ParserInputGeneratorConfiguration.cs @@ -2,6 +2,9 @@ namespace NosCore.ParserInputGenerator.Launcher.Configuration { + /// + /// Configuration for the Parser Input Generator. + /// public class ParserInputGeneratorConfiguration : LanguageConfiguration { } diff --git a/src/NosCore.ParserInputGenerator.Launcher/Program.cs b/src/NosCore.ParserInputGenerator.Launcher/Program.cs index c334005..de00603 100644 --- a/src/NosCore.ParserInputGenerator.Launcher/Program.cs +++ b/src/NosCore.ParserInputGenerator.Launcher/Program.cs @@ -10,13 +10,25 @@ namespace NosCore.ParserInputGenerator.Launcher { - class Program + /// + /// Main program entry point for the Parser Input Generator launcher. + /// + public class Program { + /// + /// Application entry point. + /// + /// Command line arguments. public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } + /// + /// Creates and configures the host builder. + /// + /// Command line arguments. + /// The configured host builder. public static IHostBuilder CreateHostBuilder(string[] args) { var configuration = new ParserInputGeneratorConfiguration(); diff --git a/src/NosCore.ParserInputGenerator.Launcher/Worker.cs b/src/NosCore.ParserInputGenerator.Launcher/Worker.cs index f6bb815..b673a30 100644 --- a/src/NosCore.ParserInputGenerator.Launcher/Worker.cs +++ b/src/NosCore.ParserInputGenerator.Launcher/Worker.cs @@ -14,6 +14,9 @@ namespace NosCore.ParserInputGenerator.Launcher { + /// + /// Background service worker that downloads and processes parser input files. + /// public class Worker : BackgroundService { private const string ConsoleText = "PARSER INPUT GENERATOR - NosCoreIO"; @@ -45,6 +48,12 @@ public class Worker : BackgroundService "NSgtdData.NOS" }; + /// + /// Initializes a new instance of the class. + /// + /// The logger instance. + /// The client downloader. + /// The file extractor. public Worker(ILogger logger, IClientDownloader client, IExtractor extractor) { _logger = logger; @@ -52,6 +61,11 @@ public Worker(ILogger logger, IClientDownloader client, IExtractor extra _extractor = extractor; } + /// + /// Executes the worker task to download, extract, and package parser input files. + /// + /// Cancellation token to stop the service. + /// A task representing the asynchronous operation. protected override async Task ExecuteAsync(CancellationToken stoppingToken) { try diff --git a/src/NosCore.ParserInputGenerator/Downloader/ClientDownloader.cs b/src/NosCore.ParserInputGenerator/Downloader/ClientDownloader.cs index 6c0c075..9537707 100644 --- a/src/NosCore.ParserInputGenerator/Downloader/ClientDownloader.cs +++ b/src/NosCore.ParserInputGenerator/Downloader/ClientDownloader.cs @@ -17,19 +17,29 @@ namespace NosCore.ParserInputGenerator.Downloader { + /// + /// Implements client file downloading functionality. + /// public class ClientDownloader : IClientDownloader { private readonly IHttpClientFactory _clientFactory; private readonly ILogger _logger; + /// + /// Initializes a new instance of the class. + /// + /// The HTTP client factory. + /// The logger instance. public ClientDownloader(IHttpClientFactory clientFactory, ILogger logger) { _clientFactory = clientFactory; _logger = logger; } + /// public Task DownloadManifest() => DownloadManifestAsync(RegionType.EN); + /// public async Task DownloadManifestAsync(RegionType region) { var client = _clientFactory.CreateClient(); @@ -42,8 +52,10 @@ public async Task DownloadManifestAsync(RegionType region) }) ?? throw new InvalidOperationException(); } + /// public async Task DownloadClientAsync() => await DownloadClientAsync(await DownloadManifest()); + /// public async Task DownloadClientAsync(ClientManifest manifest) { async Task Download(Entry entry) diff --git a/src/NosCore.ParserInputGenerator/Downloader/ClientManifest.cs b/src/NosCore.ParserInputGenerator/Downloader/ClientManifest.cs index 1f97498..dfbc3e1 100644 --- a/src/NosCore.ParserInputGenerator/Downloader/ClientManifest.cs +++ b/src/NosCore.ParserInputGenerator/Downloader/ClientManifest.cs @@ -3,35 +3,68 @@ namespace NosCore.ParserInputGenerator.Downloader { + /// + /// Represents a client manifest containing file entries and metadata. + /// public class ClientManifest { + /// + /// Gets or sets the array of file entries in the manifest. + /// [JsonPropertyName("entries")] public Entry[] Entries { get; set; } = null!; + /// + /// Gets or sets the total size of all files in bytes. + /// [JsonPropertyName("totalSize")] public long TotalSize { get; set; } + /// + /// Gets or sets the build number of the client. + /// [JsonPropertyName("build")] public long Build { get; set; } } + /// + /// Represents an individual file entry in the client manifest. + /// public class Entry { + /// + /// Gets or sets the file path. + /// [JsonPropertyName("path")] public string? Path { get; set; } + /// + /// Gets or sets the SHA1 hash of the file. + /// [JsonPropertyName("sha1")] public string? Sha1 { get; set; } + /// + /// Gets or sets the file name. + /// [JsonPropertyName("file")] public string File { get; set; } = null!; + /// + /// Gets or sets file flags. + /// [JsonPropertyName("flags")] public long Flags { get; set; } + /// + /// Gets or sets the file size in bytes. + /// [JsonPropertyName("size")] public long Size { get; set; } + /// + /// Gets or sets a value indicating whether this entry is a folder. + /// [JsonPropertyName("folder")] public bool Folder { get; set; } } diff --git a/src/NosCore.ParserInputGenerator/Downloader/IClientDownloader.cs b/src/NosCore.ParserInputGenerator/Downloader/IClientDownloader.cs index bed2d74..43ea1e5 100644 --- a/src/NosCore.ParserInputGenerator/Downloader/IClientDownloader.cs +++ b/src/NosCore.ParserInputGenerator/Downloader/IClientDownloader.cs @@ -6,12 +6,35 @@ namespace NosCore.ParserInputGenerator.Downloader { + /// + /// Interface for downloading client files and manifests. + /// public interface IClientDownloader { + /// + /// Downloads the client manifest using the default region. + /// + /// The downloaded client manifest. Task DownloadManifest(); + + /// + /// Downloads the client manifest for a specific region. + /// + /// The region to download from. + /// The downloaded client manifest. Task DownloadManifestAsync(RegionType region); + /// + /// Downloads the client files using the default manifest. + /// + /// A task representing the asynchronous operation. Task DownloadClientAsync(); + + /// + /// Downloads the client files specified in the manifest. + /// + /// The manifest containing file information. + /// A task representing the asynchronous operation. Task DownloadClientAsync(ClientManifest manifest); } } diff --git a/src/NosCore.ParserInputGenerator/Extractor/Extractor.cs b/src/NosCore.ParserInputGenerator/Extractor/Extractor.cs index bf157ec..e6d77d1 100644 --- a/src/NosCore.ParserInputGenerator/Extractor/Extractor.cs +++ b/src/NosCore.ParserInputGenerator/Extractor/Extractor.cs @@ -10,19 +10,29 @@ namespace NosCore.ParserInputGenerator.Extractor { + /// + /// Implements file extraction functionality for NostaleData archives. + /// public class Extractor : IExtractor { private readonly ILogger _logger; + /// + /// Initializes a new instance of the class. + /// + /// The logger instance. public Extractor(ILogger logger) { _logger = logger; } + /// public Task ExtractAsync(FileInfo file, string dest) => ExtractAsync(file, dest, false); + /// public Task ExtractAsync(FileInfo file) => ExtractAsync(file, $".{Path.DirectorySeparatorChar}output{Path.DirectorySeparatorChar}"); + /// public async Task ExtractAsync(FileInfo nosFile, string directory, bool rename) { async Task WriteFile(string fileName, MemoryStream decryptedContent) diff --git a/src/NosCore.ParserInputGenerator/Extractor/IExtractor.cs b/src/NosCore.ParserInputGenerator/Extractor/IExtractor.cs index 6b9f3cf..cd5fce6 100644 --- a/src/NosCore.ParserInputGenerator/Extractor/IExtractor.cs +++ b/src/NosCore.ParserInputGenerator/Extractor/IExtractor.cs @@ -9,10 +9,33 @@ namespace NosCore.ParserInputGenerator.Extractor { + /// + /// Interface for extracting archived files. + /// public interface IExtractor { + /// + /// Extracts a file to the default directory. + /// + /// The file to extract. + /// A task representing the asynchronous operation. Task ExtractAsync(FileInfo file); + + /// + /// Extracts a file to a specified directory. + /// + /// The file to extract. + /// The target directory. + /// A task representing the asynchronous operation. Task ExtractAsync(FileInfo file, string directory); + + /// + /// Extracts a file to a specified directory with optional renaming. + /// + /// The file to extract. + /// The target directory. + /// Whether to rename extracted files. + /// A task representing the asynchronous operation. Task ExtractAsync(FileInfo file, string directory, bool rename); } } \ No newline at end of file diff --git a/src/NosCore.ParserInputGenerator/I18N/LogLanguage.cs b/src/NosCore.ParserInputGenerator/I18N/LogLanguage.cs index 55f5a7d..06ac74d 100644 --- a/src/NosCore.ParserInputGenerator/I18N/LogLanguage.cs +++ b/src/NosCore.ParserInputGenerator/I18N/LogLanguage.cs @@ -10,6 +10,9 @@ namespace NosCore.ParserInputGenerator.I18N { + /// + /// Provides localized log messages based on language keys. + /// public sealed class LogLanguage { private static LogLanguage? _instance; @@ -26,15 +29,32 @@ private LogLanguage() assem); } + /// + /// Gets or sets the language/region type for localization. + /// public static RegionType Language { get; set; } + /// + /// Gets the singleton instance of LogLanguage. + /// public static LogLanguage Instance => _instance ??= new LogLanguage(); + /// + /// Gets a localized message from the specified key using the default culture. + /// + /// The message key to retrieve. + /// The localized message string. public string GetMessageFromKey(LogLanguageKey messageKey) { return GetMessageFromKey(messageKey, null); } + /// + /// Gets a localized message from the specified key using a specific culture. + /// + /// The message key to retrieve. + /// The culture name to use, or null for default. + /// The localized message string. public string GetMessageFromKey(LogLanguageKey messageKey, string? culture) { var cult = culture != null ? new CultureInfo(culture) : ResourceCulture; diff --git a/src/NosCore.ParserInputGenerator/I18N/LogLanguageKey.cs b/src/NosCore.ParserInputGenerator/I18N/LogLanguageKey.cs index b582dad..2afb32b 100644 --- a/src/NosCore.ParserInputGenerator/I18N/LogLanguageKey.cs +++ b/src/NosCore.ParserInputGenerator/I18N/LogLanguageKey.cs @@ -8,12 +8,30 @@ namespace NosCore.ParserInputGenerator.I18N { + /// + /// Enumeration of log message keys for localization. + /// [SuppressMessage("ReSharper", "InconsistentNaming")] public enum LogLanguageKey { + /// + /// Download successful message key. + /// DOWNLOAD_SUCCESSFULL, + + /// + /// Parser input generated message key. + /// PARSER_INPUT_GENERATED, + + /// + /// Error message key. + /// ERROR, + + /// + /// Downloading message key. + /// DOWNLOADING } } \ No newline at end of file From 9b6be252f0b47622435078778eb206719da7fd57 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 15 Nov 2025 01:25:27 +0000 Subject: [PATCH 08/11] Update GitHub Actions to latest versions - Updated actions/checkout from v4 to v5 - Updated actions/setup-dotnet from v4 to v5 - Quoted dotnet-version for better YAML compatibility - Ensures compatibility with .NET 10 (released November 11, 2025) --- .github/workflows/dotnet.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index d4ec2e3..defefb8 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -12,11 +12,11 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Setup .NET - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: - dotnet-version: 10.0.x + dotnet-version: '10.0.x' - name: Check Tag id: check-tag From 62412b185881e59e2d457007f337bf74ac4eebf6 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 15 Nov 2025 03:37:41 +0000 Subject: [PATCH 09/11] Update all NuGet packages to latest versions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Main project packages: - Serilog: 4.2.0 → 4.3.0 - Serilog.Extensions.Hosting: 8.0.0 → 9.0.0 Test project packages: - Microsoft.NET.Test.Sdk: 17.12.0 → 18.0.1 - MSTest.TestAdapter: 3.6.3 → 4.0.2 - MSTest.TestFramework: 3.6.3 → 4.0.2 - coverlet.collector: 6.0.2 → 6.0.4 All packages are now at their latest stable versions as of November 2025. --- .../NosCore.ParserInputGenerator.csproj | 4 ++-- .../NosCore.ParserInputGenerator.Tests.csproj | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj b/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj index 4c14465..91df775 100644 --- a/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj +++ b/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj @@ -42,8 +42,8 @@ - - + + diff --git a/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj b/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj index 1a0393e..adc66cc 100644 --- a/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj +++ b/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj @@ -7,10 +7,10 @@ - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive From 47e651e899340817229d41d1e54b0797763956bf Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 15 Nov 2025 03:49:29 +0000 Subject: [PATCH 10/11] Fix security vulnerabilities in JWT packages Added explicit package references to override vulnerable transitive dependencies: - Microsoft.IdentityModel.JsonWebTokens: 8.2.1 (fixes GHSA-59j7-ghrg-fj52 / CVE-2024-21319) - System.IdentityModel.Tokens.Jwt: 8.2.1 (fixes GHSA-59j7-ghrg-fj52 / CVE-2024-21319) These packages override the vulnerable 7.0.3 versions that were coming from transitive dependencies. The vulnerability (CVE-2024-21319) is a Denial of Service issue affecting JWT-based authentication tokens, allowing unauthenticated clients to consume excessive server memory. --- .../NosCore.ParserInputGenerator.Launcher.csproj | 5 +++++ .../NosCore.ParserInputGenerator.csproj | 2 ++ .../NosCore.ParserInputGenerator.Tests.csproj | 2 ++ 3 files changed, 9 insertions(+) diff --git a/src/NosCore.ParserInputGenerator.Launcher/NosCore.ParserInputGenerator.Launcher.csproj b/src/NosCore.ParserInputGenerator.Launcher/NosCore.ParserInputGenerator.Launcher.csproj index 3325140..0e63687 100644 --- a/src/NosCore.ParserInputGenerator.Launcher/NosCore.ParserInputGenerator.Launcher.csproj +++ b/src/NosCore.ParserInputGenerator.Launcher/NosCore.ParserInputGenerator.Launcher.csproj @@ -10,6 +10,11 @@ ..\..\build\ + + + + + diff --git a/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj b/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj index 91df775..4014aa3 100644 --- a/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj +++ b/src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj @@ -41,10 +41,12 @@ + + diff --git a/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj b/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj index adc66cc..71ade03 100644 --- a/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj +++ b/test/NosCore.ParserInputGenerator.Tests/NosCore.ParserInputGenerator.Tests.csproj @@ -7,9 +7,11 @@ + + all runtime; build; native; contentfiles; analyzers; buildtransitive From 296c4b23e119c9b0411d088b47247933f0c7cdcb Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 15 Nov 2025 03:51:09 +0000 Subject: [PATCH 11/11] Configure MSTest parallelization Added assembly-level Parallelize attribute to fix MSTEST0001 analyzer error. Tests will run sequentially (Workers = 0) for safe and predictable execution. This is required by MSTest 4.0+ analyzers. --- test/NosCore.ParserInputGenerator.Tests/UnitTest1.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/NosCore.ParserInputGenerator.Tests/UnitTest1.cs b/test/NosCore.ParserInputGenerator.Tests/UnitTest1.cs index 2db5a97..da8d5f6 100644 --- a/test/NosCore.ParserInputGenerator.Tests/UnitTest1.cs +++ b/test/NosCore.ParserInputGenerator.Tests/UnitTest1.cs @@ -1,5 +1,7 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; +[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)] + namespace NosCore.ParserInputGenerator.Tests { [TestClass]