Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Move to xUnit v3 (#162)
- Generate Zod v4 schemas (#168)
- Use `globalThis.Response` instead of `Response` to avoid conflicts (#147)
- Set kebab-case as the default casing (#166)

## [0.17.4.1] - 2025-09-19

Expand Down
4 changes: 2 additions & 2 deletions TypeContractor.Tests/TypeScript/ApiClientWriterTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -357,8 +357,8 @@ public void Avoids_Duplicate_Imports_With_Same_ReturnType_And_Parameter()
var file = File.ReadAllText(result).Trim();
file.Should()
.NotBeEmpty()
.And.Contain("import { PersonDto, PersonDtoSchema } from '~/TypeContractor/Tests/TypeScript/PersonDto';")
.And.NotContain("import { PersonDto } from '~/TypeContractor/Tests/TypeScript/PersonDto';")
.And.Contain("import { PersonDto, PersonDtoSchema } from '~/type-contractor/tests/type-script/person-dto';")
.And.NotContain("import { PersonDto } from '~/type-contractor/tests/type-script/person-dto';")
.And.Contain("export class TestClient {")
.And.Contain("public async update(request: PersonDto, cancellationToken: AbortSignal = null): Promise<PersonDto> {")
.And.Contain("const url = new URL('test', window.location.origin);")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ public void Nested_Classes_Gets_DeclaringType_As_Folder_Prefix()

result.Should().NotBeNull();
result.Name.Should().Be("Response");
result.ContractedType.Folder.Path.Should().EndWith("YearSummary");
result.ContractedType.Folder.Path.Should().EndWith("year-summary");
}

[Fact]
Expand Down
2 changes: 1 addition & 1 deletion TypeContractor.Tool/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
var buildZodSchemasOptions = new Option<bool>("--build-zod-schemas", () => false, "Enable experimental support for Zod schemas alongside generated types.");
var generateApiClientsOptions = new Option<bool>("--generate-api-clients", () => false, "Enable experimental support for auto-generating API clients for each endpoint.");
var apiClientsTemplateOptions = new Option<string>("--api-client-template", () => "aurelia", "Template to use for API clients. Either 'aurelia', 'react-axios' (built-in) or a path to a Handlebars file, including extension");
var casingOptions = new Option<Casing>("--casing", () => Casing.Pascal, "Casing to use for generated file names");
var casingOptions = new Option<Casing>("--casing", () => Casing.Kebab, "Casing to use for generated file names");
assemblyOption.IsRequired = true;
outputOption.IsRequired = true;

Expand Down
4 changes: 2 additions & 2 deletions TypeContractor/Casing.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
namespace TypeContractor;
namespace TypeContractor;

public enum Casing
{
/// <summary>
/// PascalCase (default)
/// PascalCase
/// </summary>
Pascal,

Expand Down
6 changes: 3 additions & 3 deletions TypeContractor/Helpers/CasingHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace TypeContractor.Helpers;
internal partial class CasingHelpers
{
[GeneratedRegex(@"(?<!^)(?=[A-Z][a-z])|(?<=(?<=[a-z])(?=[A-Z]))|(?<=(?<=[A-Z])(?=[A-Z][a-z]))")]
private static partial Regex SeperateWordsWithRegex();
private static partial Regex SeparateWordsWithRegex();

[GeneratedRegex(@"([A-Z]+(?=[A-Z][a-z]|\d|\W|$)|\d+|[A-Z][a-z]+)")]
private static partial Regex FindWordsRegex();
Expand Down Expand Up @@ -44,7 +44,7 @@ private static string ToCamelCase(string input)
return sb.ToString();
}

private static string ToSnakeCase(string input) => SeperateWordsWithRegex().Replace(input, "_").ToLower(_cultureInfo);
private static string ToSnakeCase(string input) => SeparateWordsWithRegex().Replace(input, "_").ToLower(_cultureInfo);

private static string ToKebabCase(string input) => SeperateWordsWithRegex().Replace(input, "-").ToLower(_cultureInfo);
private static string ToKebabCase(string input) => SeparateWordsWithRegex().Replace(input, "-").ToLower(_cultureInfo);
}
2 changes: 1 addition & 1 deletion TypeContractor/TypeContractorConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public class TypeContractorConfiguration
public bool GenerateApiClients => _apiClients.Count != 0;
public IReadOnlyList<ApiClient> ApiClients => _apiClients.AsReadOnly();
public string ApiClientTemplate => _apiClientTemplate ?? "aurelia";
public Casing Casing => _casing ?? Casing.Pascal;
public Casing Casing => _casing ?? Casing.Kebab;

/// <summary>
/// Set up a default configuration using <see cref="AddDefaultSuffixes"/> and <see cref="AddDefaultTypeMaps"/>
Expand Down
Loading