July 2022
This release contains breaking changes
- Emitter options normalized to use kebab-case instead of camelCase.
- @serviceHostdecorator replaced by- @serverdecorator
- Versioning decorators now use enumerated values instead of strings
Emitter options
This release brings a stricter option definition for emitters and requires usage of those options to be specified with the fully qualified name to prevent conflicts.
All options have also been renamed to match kebab-case naming.
The options can also be specified via the tspconfig.yaml file.
Migrating Command Line Scripts
If you had for example --option operationPollingLocation=tenant
- 
Use tspconfig.yamlproject file RecommendedIf you donโt have that file yet, create it next to package.json, this file can be used to configure the emitters.emitters:<fully-qualified-emitter-package-name>:<optionName>: <optionValue># For exampleemitters:@typespec/openapi3:output-file: ./openapi.json
- 
Via the --optionflagYou can still use the --optionflag but youโll need to specify the fully qualified name of the option.Terminal window --option @<emitter-package>.<optionName>=<optionValue># For example--option @typespec/openapi3.output-file=openapi.json
Renamed Emitter Options
| Before | Now | 
|---|---|
| @typespec/openapi3 | |
| outputFile | output-file | 
@serviceHost decorator replaced with @server decorator
The @serviceHost decorator that decorated the root namespace was used to specify the domain name of the base service endpoint. This functionality has been replaced by the @server decorator, which allows specifying full and parametrized Uris for the service endpoint, as described here
Before
@serviceHost("example.com")namespace MyService;After
@server("https://example.com")namespace MyService;Versioning uses enums instead of strings
Versions must now be specified using string-valued enumerations, and each of the versioning decorators must reference an enum value rather than using the version string directly.
// Before@versioned("2021-01-12" | "2022-01-15-preview")namespace Api;
// After@versioned(Versions)namespace Api;
enum Versions { v2021_01_12: "2021-01-12", v2022_01_15_preview: "2022-01-15-preview" }// Before@added("2022-01-15-preview")model Foo {}
// After@added(Versions.v2022_01_15_preview)model Foo {}