All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Simplified response for generated API clients using the React template (#203)
- Add default maps for unsigned numbers (#180)
- Apply
TypeContractorIgnoreto properties - Add support for converting classes with constants (#196)
- Add support for specifying additional assemblies to look in
- Do case-insensitive file compare when smart cleaning (#203)
- Fix unwrapping Zod schemas for nullable record structs (#207)
- Avoid potential null references when logging custom attribute errors
- Update the way we handle enums when generating Zod schemas (#202)
- Use SLNX for the solution file
- Update dependencies
0.19.0 - 2026-03-07
- Support for .NET10 (#188)
- Set .NET10 as the default version
- Update dependencies
0.18.0 - 2026-01-04
- Add better handling of FileLoadException when looking at custom attributes (#176)
- Write a newline after the exception when logging the error
- Improve detection of generic arguments for classes quacking like a
Dictionary, or other generic arguments - Make sure we don't generate an interface for
IActionResult
- Move to xUnit v3 (#162)
- Generate Zod v4 schemas (#168)
- Use
globalThis.Responseinstead ofResponseto avoid conflicts (#147) - Set kebab-case as the default casing (#166)
- Update System.CommandLine to 2.0.1 (#163, #185)
- Update dependencies (#184, #181)
0.17.4.1 - 2025-09-19
- Order list of loaded assemblies when logging a
FileLoadException, but, like, really this time.
0.17.4 - 2025-09-19
- Make detecting and unwrapping arrays more reliable
- Bump System.Reflection.MetadataLoadContext from 9.0.5 to 9.0.9
- Add default map from
System.Uritostring - Order list of loaded assemblies when logging a
FileLoadException
0.17.3 - 2025-06-12
- Always use uppercase HTTP verbs (#149)
- Bump dependencies
0.17.2 - 2025-04-14
- Avoid unnecessary import of Zod library (#139)
0.17.1 - 2025-04-12
- Handle array properties (
SomeDto[]) properly (#140) - Avoid duplicate imports for endpoints having the return type as a parameter type (#139)
- Bump System.Reflection.MetadataLoadContext from 9.0.0 to 9.0.3
- Bump Microsoft.NET.Test.Sdk from 17.12.0 to 17.13.0
- Bump coverlet.collector from 6.0.2 to 6.0.4
- Bump xunit.runner.visualstudio from 3.0.0 to 3.0.2
- Bump xunit.analyzers and xunit
0.17.0 - 2025-02-16
- Better support for generic types (#123)
- Allow enums to be used as query parameters in API clients (#133)
0.16.0 - 2024-12-17
- Options for file name casings, defaulting to
pascalbut can be set tocamel,snakeorkebab - Add header to each file explaining that it is auto-generated and not to change manually
- Bump FluentAssertions from 6.12.2 to 7.0.0
- Bump xunit.runner.visualstudio to from 2.8.2 to 3.0.0
- Bump xunit.analyzers from 1.17.0 to 1.18.0
0.15.0 - 2024-12-02
- Handle name collisions when creating API clients (#106)
- Add annotations package to further customize output (#107)
- Support for .NET9
- Send request bodies on DELETE requests even though they should not be used
- Bump Microsoft.NET.Test.Sdk from 17.11.1 to 17.12.0
- Bump System.Reflection.MetadataLoadContext from 8.0.1 to 9.0.0
0.14.0 - 2024-11-17
- Handle optional segments in routes for API clients (#77)
- Added configuration file support (#90)
- Don't generate types for parameters with an
[FromServices]annotation (#95) - Add default
any-mapping forIActionResultas a return type (#98) - Log an error if we're unable to match a route parameter when generating API clients (#86)
- Revert the "response files" fix in 0.13.1, since it broke default command line handling, including the --help command
- Standardize on encoding generated files as UTF-8 without BOM
- Write a final newline in the files
- Standardize on tabs for indentation
- Fix some editorconfig settings
0.13.1 - 2024-11-11
- Add basic template for React with Axios
- Ignore response files when parsing command line, so "@/Api" can be accepted as a valid relative root
- Update System.Reflection.MetadataLoadContext to v8.0.1
- Update xunit to v2.9.2
- Update xunit.analyzers to v1.17.0
- Update FluentAssertions to v6.12.2
0.13.0 - 2024-11-09
- Generate API clients using Handlebars templates, with an option to provide custom templates (#75)
- Strip trailing slash in API clients (#87)
0.12.7 - 2024-10-10
- Only import Zod in generated API clients if we actually want it
- Set nullable enums as
.nullable(), not.optional()in Zod schema (#82)
- Standardize on single quotes for imports
0.12.6 - 2024-09-18
- Don't blindly append controller prefix to API client URLs (#76)
0.12.5 - 2024-09-18
- Slice of the initial slash in API client URLs.
- Fix formatting for arrays as query strings
0.12.4 - 2024-09-18
- Use the correct variable reference when unpacking query parameters (Really fix #68)
0.12.3 - 2024-09-17
- Handle nullable parameters to API clients better. Only send query parameters if we have a value
- Unpack non-builtin query parameters automatically (#68)
- Update xunit.analyzers from v1.15.0 to v1.16.0
- Update FluentAssertions from v6.12.0 to v6.12.1
- Update Microsoft.NET.Test.Sdk from v17.11.0 to 17.11.1
0.12.2 - 2024-09-16
- Handle enumerable parameters in API clients
0.12.1 - 2024-09-13
- Improve detection of FromRoute/FromQuery parameters in API clients
- Make sure query parameters are stringified for API clients
- Fix import paths for nested classes for API clients
- Improve handling of builtin return types for API clients
0.12.0 - 2024-09-13
- Experimental creation of Zod schemas
- Automatic generation of API clients
- Update xunit and friends
- Update Microsoft.NET.Test.Sdk to 17.11.0
0.11.0 - 2024-06-21
- Include
@deprecatedJSDoc if property is marked as[Obsolete](#45)
- Handle nullability for more types, including
stringand records (#51)
- Update xunit and friends
- Update Microsoft.NET.Test.Sdk to 17.10.0
0.10.0 - 2024-04-21
- Add default map from
System.DateOnlyandSystem.TimeOnlytostring
- Update xunit to 2.7.1
- Update xunit.analyzers to 1.12.0
- Update xunit.runner.visualstudio to 2.5.8
- Update coverlet.collector to 6.0.2
- Update Microsoft.NET.Test.Sdk to 17.9.0
0.9.2 - 2024-01-28
- Work around failing to load
System.Text.Json, which it claims we're doing twice in some cases. (#28)
- Add global singleton
Log.Instanceto simplify logging in helpers - Minor code fixes suggested by Visual Studio
- Use a source-generated regex for creating TypeScript names
- Update xunit to v2.6.6
0.9.1 - 2024-01-07
- Add default map from
System.Objecttoany
- Fix writing dictionaries with custom types as values wrapped inside lists.
E.g. converting
Dictionary<Guid, IEnumerable<FormulaDto>>to{ [key: string]: FormulaDto[] } - Fix writing dictionaries wrapped inside other dictionaries, e.g. making sure
Dictionary<Guid, Dictionary<string, IEnumerable<FormulaDto>>>correctly translates to{ [key: string]: { [key: string]: FormulaDto[] } }.
0.9.0 - 2024-01-05
- Tool and library built using .NET8 (#14)
- Add
--dotnet-versionoption to set the dotnet version used for finding framework DLLs. Defaults to 8.
- Update xunit to v2.6.5
0.8.1 - 2023-12-24
- Add default maps from
System.DoubletonumberandSystem.TimeSpantostring(#19)
- Improve error logging if a type fails to convert (#20)
- Update xunit to v2.6.4
- Update xunit.runner.visualstudio to v2.5.6
- Update xunit.analyzers to v1.8.0
0.8.0 - 2023-12-05
- Tool exits with code 0 when everything is okay and 1 when something has gone wrong
- Log an error and continue when we fail to convert a file
- Enable Dependabot version updates
- Update xunit to v2.6.2
- Update xunit.runner.visualstudio to v2.5.4
- Update xunit.analyzers to v1.6.0
- Fix compiler warnings
0.7.0 - 2023-09-17
- Add support for
readonlyoutput properties (#1)
- Properly handle
IEnumerable<T>as values in a Dictionary (#2)
0.6.0 - 2023-09-02
- Add smart cleanup to help file-watching tools not freak out when everything changes at once.
- Add a
ILoginsideTypeContractorto simplify adding debug information
- Remove the MSBuild-based tool, to focus on the dotnet-tool instead.
0.5.1 - 2023-07-28
- Replace
typeofcomparison with a name-based approach
- Add better debug output when we can't find a type to import
0.5.0 - 2023-07-28
- Add default mapping from
dynamictoany
0.4.0 - 2023-06-24
- Add configurability to the dotnet-tool
- Automatically find parameters for endpoints
- Move code from tool into library for better sharing
0.3.1 - 2023-06-12
- Add the dotnet-tool
- Add more null checks
- Add PackageId to nuget libraries
0.3.0 - 2023-06-06
- Add support for mapping nested classes
- Add support for mapping (simple)
ValueTupletypes
- Add better debug when import paths fail to find a common ancestor
0.2.0 - 2023-06-06
- Add support for mapping
Dictionary<TKey, TValue>to TypeScript
- Fix compiler warnings
- Add more unit tests
- Minor code cleanup
0.1.0 - 2023-05-30
- Initial release