From 04f06f32eefea68aac5915cca3617ba4fb93c7b5 Mon Sep 17 00:00:00 2001 From: Ed Ball Date: Thu, 27 Aug 2026 13:45:46 -0700 Subject: [PATCH 1/2] Remove extra blank line from TypeScript output --- conformance/src/conformanceApiTypes.ts | 1 - example/ts/src/exampleApiTypes.ts | 1 - .../JavaScriptGenerator.cs | 1 - .../JavaScriptGeneratorTests.cs | 19 +++++++++++++++++++ 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/conformance/src/conformanceApiTypes.ts b/conformance/src/conformanceApiTypes.ts index c8e4801..ad7b1d3 100644 --- a/conformance/src/conformanceApiTypes.ts +++ b/conformance/src/conformanceApiTypes.ts @@ -553,4 +553,3 @@ export enum ApiErrors { /** I'm "too" 😄! */ TooHappy = 'TooHappy', } - diff --git a/example/ts/src/exampleApiTypes.ts b/example/ts/src/exampleApiTypes.ts index 45ce934..8fb2b74 100644 --- a/example/ts/src/exampleApiTypes.ts +++ b/example/ts/src/exampleApiTypes.ts @@ -355,4 +355,3 @@ export enum ExampleApiErrors { /** The user is not an administrator. */ NotAdmin = 'NotAdmin', } - diff --git a/src/Facility.CodeGen.JavaScript/JavaScriptGenerator.cs b/src/Facility.CodeGen.JavaScript/JavaScriptGenerator.cs index e786495..e0db116 100644 --- a/src/Facility.CodeGen.JavaScript/JavaScriptGenerator.cs +++ b/src/Facility.CodeGen.JavaScript/JavaScriptGenerator.cs @@ -141,7 +141,6 @@ public override CodeGenOutput GenerateOutput(ServiceInfo service) WriteImports(code, import.Select(x => $"{x.Name}{(x.Name != x.Alias ? $" as {x.Alias}" : "")}").ToArray(), import.Key); typeNames.AddRange(WriteTypes(code, httpServiceInfo)); - code.WriteLine(); })); } diff --git a/tests/Facility.CodeGen.JavaScript.UnitTests/JavaScriptGeneratorTests.cs b/tests/Facility.CodeGen.JavaScript.UnitTests/JavaScriptGeneratorTests.cs index 9699d80..d5f4dad 100644 --- a/tests/Facility.CodeGen.JavaScript.UnitTests/JavaScriptGeneratorTests.cs +++ b/tests/Facility.CodeGen.JavaScript.UnitTests/JavaScriptGeneratorTests.cs @@ -402,6 +402,25 @@ public void GenerateExampleApiTypeScript_DataPropertiesRequired() Assert.That(typesFile.Text, Does.Contain("}")); } + [Test] + public void GenerateExampleApiTypeScript_TypesFileDoesNotEndWithBlankLine() + { + const string definition = "service TestApi { }"; + var parser = CreateParser(); + var service = parser.ParseDefinition(new ServiceDefinitionText("TestApi.fsd", definition)); + var generator = new JavaScriptGenerator + { + GeneratorName = "JavaScriptGeneratorTests", + TypeScript = true, + NewLine = "\n", + }; + var result = generator.GenerateOutput(service); + + var typesFile = result.Files.Single(f => f.Name == "testApiTypes.ts"); + Assert.That(typesFile.Text, Does.EndWith("\n")); + Assert.That(typesFile.Text, Does.Not.EndWith("\n\n")); + } + [TestCase("", true)] [TestCase("", false)] [TestCase("suffix", true)] From 2593b69db5e64e76aa341969d26e46733490e350 Mon Sep 17 00:00:00 2001 From: Ed Ball Date: Thu, 27 Aug 2026 13:47:43 -0700 Subject: [PATCH 2/2] Publish 3.9.3 --- Directory.Build.props | 4 ++-- ReleaseNotes.md | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 33fd268..e0eff3b 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,8 +1,8 @@ - 3.9.2 - 3.9.1 + 3.9.3 + 3.9.2 $(NoWarn);1591;1998;NU1507;NU5105 FacilityApi FacilityJavaScript diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 575cb78..6bda466 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,6 +2,10 @@ These are the NuGet package releases. See also [npm Release Notes](ReleaseNotesNpm.md). +## 3.9.3 + +* Fix an extra blank line at the end of generated TypeScript types files. + ## 3.9.2 * Update dependencies.