0.59 - August 2024
Breaking Changes
@typespec/compiler
-
#4050 Fix issue where naming a namespace with the same name as the blockless namespace would merge with it instead of creating a subnamespace like any other name would.
Previously model
A
would end-up in namespaceMyOrg.MyProject.MyArea
and modelB
inMyOrg.MyProject.MyArea2
. With this change modelA
will now be inMyOrg.MyProject.MyOrg.MyProject.MyArea
. To achieve the previous behavior the above code should be written as:
@typespec/json-schema
- #3558 Updates
@extension
decorator to support TypeSpec values in addition to types.
In previous versions of the json-schema emitter, the @extension
decorator only accepted types as the value. These are emitted as JSON schemas. In order to add extensions as raw values, types had to be wrapped in the Json<>
template when being passed to the @extension
decorator.
This change allows setting TypeSpec values (introduced in TypeSpec 0.57.0) directly instead.
The following example demonstrates using values directly:
This change results in scalars being treated as values instead of types. This will result in the @extension
decorator emitting raw values for scalar types instead of JSON schema. To preserve the previous behavior, use typeof
when passing in a scalar value.
The following example demonstrates how to pass a scalar value that emits a JSON schema:
To preserve this same behavior, the above example can be updated to the following:
Deprecations
@typespec/http
-
#3932 API deprecation:
HttpOperation#pathSegments
is deprecated. UseHttpOperation#uriTemplate
instead. -
#3932 Deprecated
@query({format: })
option. Use@query(#{explode: true})
instead ofform
ormulti
format. Previouslycsv
/simple
is the default now. Decorator is also expecting an object value now instead of a model. A deprecation warning with a codefix will help migrating.
Features
@typespec/compiler
-
#3906 Support completion for template parameter extending model or object value
Example
-
#4020 Add support for encoding numeric types as string
-
#4023 Warn when using
\
in config file field that expect a path. -
#3932 Add
ArrayEncoding
enum to define simple serialization of arrays
@typespec/http
-
#4046 API: Expose
properties: HttpProperty[]
on operation parameter and response which reference all the properties of interest(Body, statusCode, contentType, implicitBodyProperty, etc.) -
#3932
@route
can now take a uri template as defined by RFC-6570
@typespec/rest
- #3932 Add support for URI templates in routes
@typespec/openapi3
- #3894 Add support for
@useRef
on responses - #4020 Add support for encoding numeric types as string
- #3890
@extension
used on the service namespace will set extension at the root of the document - #3932 Add support for URI templates in routes
Bug Fixes
@typespec/compiler
-
#3881 Fixes a bug where ending a non-terminal line in a multi-line comment with a backslash caused the next star to show up in the parsed doc string.
-
#4050 Allow using compact namespace form
Foo.Bar
when inside another namespace -
#3898 Fix decimal numeric with leading zeros
-
#4046 Fix type comparison of literal and scalar when in projection context
-
#4022
tsp compile --watch
will not stop when a crash happens during compilation -
#3933 Add
const
template parameter to get the precise lib type
@typespec/http
- #3909 Fix
HttpPart
not respecting explicit part name by always using the property name - #3933 Fix some diagnostic not showing the right message
@typespec/versioning
- #3911 Allow spreading a model that has props added in previous version
- #3951 Fixes issue where spreading a versioned model as a parameter to an incompatible versioned operation would cause the compiler to crash.
@typespec/openapi3
- #4046 Fix issue where operation example would produce an empty object when
@body
/@bodyRoot
was used - #4046 Fix operation response body examples showing up for each response.
- #3912 Fixes bug where union documentation was being applied to each union member in emitted output.
- #3908 Fixes bug where circular references in unions caused an empty object to be emitted instead of a ref.
@typespec/protobuf
- #3933 Fix some diagnostic not showing the right message