Skip to content

Releases: microsoft/typespec

typespec@0.57.0

13 Jun 23:40
9c701cc
Compare
Choose a tag to compare

@typespec/compiler

Bug Fixes

  • #3399 Preserve leading whitespace in fenced blocks in doc comments
  • #3566 [API] Do not run decorators on cloned type if the original type wasn't finished
  • #3522 Fix EINVAL error when running tsp code install
  • #3371 Numeric not handling trailing zeros and causing freeze(e.g. const a = 100.0)
  • #3451 Emitter framework: fix losing context when referencing circular types
  • #3517 Fix application of @param doc tag on operation create with op is to override upstream doc
  • #3488 Add PickProperties type to dynamically select a subset of a model

Bump dependencies

  • #3401 Update dependencies - May 2024

Features

  • #3280 Support completion for Model with extended properties

    Example

    model Device {
      name: string;
      description: string;
    }
    
    model Phone extends Device {
      ┆
    } | [name]
      | [description]
    
  • #3280 Support completion for object values and model expression properties.

    Example

    model User {
      name: string;
      age: int32;
      address: string;
    }
    
    const user: User = #{name: "Bob", ┆}
                                      | [age]
                                      | [address]
    
  • #3375 Allow @ to be escaped in doc comment with \

  • #3022 Add syntax for declaring values. See docs.

Object and array values

@dummy(#{
  name: "John",
  age: 48,
  address: #{ city: "London" }
  aliases: #["Bob", "Frank"]
})

Scalar constructors

scalar utcDateTime {
  init fromISO(value: string);
}

model DateRange {
  minDate: utcDateTime = utcDateTime.fromISO("2024-02-15T18:36:03Z");
}
  • #3527 Add support for @prop doc comment tag to describe model properties

  • #3422 Formatter: Indent or dedent multiline strings to the current indentation

  • #3460 Hide deprecated items from completion list

  • #3443 Support completion for keyword 'extends' and 'is'

    Example

    model Dog ┆ {}
              | [extends]
              | [is]
    
    scalar Addresss ┆ 
                    | [extends]
    
    op jump ┆ 
            | [is]
    
    interface ResourceA ┆ {}
                        | [extends]
    
    model Cat<T ┆> {}
                | [extends]
    
  • #3462 Linter all rulesets is automatically created if not explicitly provided

  • #3533 More logs and traces are added for diagnostic and troubleshooting in TypeSpec language server

Deprecations

  • #3022 Using a tuple type as a value is deprecated. Tuple types in contexts where values are expected must be updated to be array values instead. A codefix is provided to automatically convert tuple types into array values.
model Test {
  // Deprecated
  values: string[] = ["a", "b", "c"];
  
  // Correct
  values: string[] = #["a", "b", "c"];
  • #3022 Using a model type as a value is deprecated. Model types in contexts where values are expected must be updated to be object values instead. A codefix is provided to automatically convert model types into object values.
model Test {
  // Deprecated
  user: {name: string} = {name: "System"};
  
  // Correct
  user: {name: string} = #{name: "System"};
  • #3022 Decorator API: Legacy marshalling logic

With the introduction of values, the decorator marshalling behavior has changed in some cases. This behavior is opt-in by setting the valueMarshalling package flag to "new", but will be the default behavior in future versions. It is strongly recommended to adopt this new behavior as soon as possible.

Example:

extern dec multipleOf(target: numeric | Reflection.ModelProperty, value: valueof numeric);

Will now emit a deprecated warning because value is of type valueof string which would marshall to Numeric under the new logic but as number previously.

To opt-in you can add the following to your library js/ts files.

export const $flags = definePackageFlags({
  decoratorArgMarshalling: "new",
});

@typespec/http

Bug Fixes

  • #3022 Update Flow Template to make use of the new array values

Bump dependencies

  • #3401 Update dependencies - May 2024

Features

  • #3342 Add new multipart handling. Using @multipartBody with HttpPart<Type, Options>. See multipart docs for more information.

    op upload(@header contentType: "multipart/mixed", @multipartBody body: {
      name: HttpPart<string>;
      avatar: HttpPart<bytes>[];
    }): void;
    
  • #3462 Use new compiler automatic all ruleset instead of explicitly provided one

@typespec/versioning

Bug Fixes

  • #3292 Add @madeRequired decorator
  • #3022 Update to support new value types
  • #3409 Using @removed on member types and @added on containing type could result in errors
  • #3255 If a property were marked with @added on a later version, the logic that said it was originally added on the first version was erroneously removed, resulting in incorrect projections.

Bump dependencies

  • #3401 Update dependencies - May 2024

@typespec/rest

Bug Fixes

  • #3022 Update types to support new values in TypeSpec

Bump dependencies

  • #3401 Update dependencies - May 2024

@typespec/openapi

Bump dependencies

  • #3401 Update dependencies - May 2024

@typespec/openapi3

Bug Fixes

  • #3342 Add support for new multipart constructs in http library
  • #3574 Emit diagnostic when an invalid type is used as a property instead of crashing.

Bump dependencies

  • #3401 Update dependencies - May 2024

Features

  • #3022 Add support for new object and array values as default values (e.g. decimals: decimal[] = #[123, 456.7];)

@typespec/protobuf

Bug Fixes

  • #3022 Update to support new value types
  • #3561 Corrected cross-package reference behavior in some buggy cases.

Bump dependencies

  • #3401 Update dependencies - May 2024

@typespec/prettier-plugin-typespec

Bump dependencies

  • #3401 Update dependencies - May 2024

@typespec/eslint-plugin

Bump dependencies

  • #3401 Update dependencies - May 2024

@typespec/html-program-viewer

Bump dependencies

  • #3401 Update dependencies - May 2024

Features

  • #3022 Add support for values

@typespec/json-schema

Bug Fixes

  • #3398 Fix decorators application for union variants
  • #3022 Update to support new value types
  • #3430 The emitted JSON Schema now doesn't make root schemas for TypeSpec types which do not have the @jsonschema decorator or are contained in a namespace with that decorator. Instead, such schemas are put into the $defs of any root schema which references them, and are referenced using JSON Pointers.

Bump dependencies

  • #3401 Update dependencies - May 2024

Features

@typespec/internal-build-utils

Bump dependencies

  • #3401 Update dependencies - May 2024

typespec-vs

Features

typespec-vscode

Bump dependencies

  • #3401 Update dependencies - May 2024

Features

  • #3533 Enhance logging and trace
  1. Support "Developer: Set Log Level..." command to filter logs in TypeSpec output channel
  2. Add "typespecLanguageServer.trace.server" config for whether and how to send th...
Read more

tmlanguage-generator@0.5.6

13 Jun 23:40
9c701cc
Compare
Choose a tag to compare

Bump dependencies

  • #3401 Update dependencies - May 2024

@typespec/xml@0.57.0

13 Jun 23:40
9c701cc
Compare
Choose a tag to compare

Bump dependencies

  • #3401 Update dependencies - May 2024

@typespec/playground@0.3.0

13 Jun 23:40
9c701cc
Compare
Choose a tag to compare

Bug Fixes

  • #3542 Fix issue where hover tooltip would be cropped or not visible

Bump dependencies

  • #3401 Update dependencies - May 2024

Features

  • #3465 Provide ability to add custom program viewers
  • #3569 Support loglevel in playground's logging

@typespec/bundler@0.1.4

13 Jun 23:40
9c701cc
Compare
Choose a tag to compare

Bump dependencies

  • #3401 Update dependencies - May 2024

typespec@0.56.0

08 May 01:17
dec5043
Compare
Choose a tag to compare

@typespec/compiler

Bug Fixes

  • #3170 --nostdlib flag will now work by only applying to optional standard library types
  • #3212 Fix: augmenting template model property could result in sending invalid argument to decorator
  • #3188 Fix: Do not crash when trying to access member of aliased expressions
  • #3185 Fix tsp init hanging when done due to unclosed connection
  • #3151 IDE: Fix completion of statement keywords
  • #3287 Templated interface extending another templated interface shouldn't run decorator on their operations
  • #3290 Model with an optional property should not satisfy a constraint with that property required. ({foo?: string} cannot be assigned to a constraint of {foo: string})
  • #3163 Fix: Model with spread indexer shouldn't validate explicit properties
  • #3227 Stop running decorators on partially instantiated operations(When interface is instantiated but not the operation)
  • #3180 Fix issue where directives were not parsed to the leaf node in multi-segment Namespace segments.
  • #3243 Fix calling tsp install on windows due to recent NodeJS breaking change to fix vulnerability.
  • #3216 Fix compiler crash when using an invalid is target in an interface operation template
  • #3246 Internals: Use node built-in fetch API that is now stable since node 18.13.0

Bump dependencies

  • #3169 Update dependencies

Features

  • #3035 getEncode returns the fully qualified enum member name if using a custom enum.
  • #3183 Show template parameters when hovering on an operation template
  • #3191 [API] Add new sourceModels property to model

@typespec/http

Bug Fixes

  • #3196 Fix password flow defining authorizationUrl instead of tokenUrl
  • #3190 Fix @path param mapping when spreading a record in operation parameters
  • #3218 Fix: @path property shouldn't be applicableMetadata if the visibility contains Read

Bump dependencies

  • #3169 Update dependencies

Breaking Changes

  • #2945 Empty model after removing metadata and applying visibility always results in "void"
    This means the following case have changed from returning {} to no body

    op b1(): {};
    op b2(): {@visibility("none") prop: string};
    op b3(): {@added(Versions.v2) prop: string};
    

    Workaround: Use explicit @body

    op b1(): {@body _: {}};
    op b2(): {@body _: {@visibility("none") prop: string}};
    op b3(): {@body _: {@added(Versions.v2) prop: string}};
    
  • #2945 Implicit status code always 200 except if response is explicitly void

    op c1(): {@header foo: string}; // status code 200 (used to be 204)
    

    Solution: Add explicit @statusCode

    op c1(): {@header foo: string, @statusCode _: 204};
    op c1(): {@header foo: string, ...NoContent}; // or spread common model
    
  • #2945 @body means this is the body

    This change makes using @body mean this is the exact body and everything underneath will be included, including metadata properties. If metadata properties are present on the body, a warning will be logged.

    op a1(): {@body _: {@header foo: string, other: string} };
                    ^ warning header in a body, it will not be included as a header.
    

    Use @bodyRoot if you want to only change where to resolve the body from.

    op a1(): {@bodyRoot _: {@header foo: string, other: string} };
    
  • #2945 Properties are not automatically omitted if everything was removed from metadata or visibility

    op d1(): {headers: {@header foo: string}}; // body will be {headers: {}}
    

    Solution: use @bodyIgnore

    op d1(): {@bodyIgnore headers: {@header foo: string}}; // body will be {headers: {}}
    

@typespec/versioning

Bug Fixes

  • #3264 Fix crash when @service appears inside a versioned namespace

Bump dependencies

  • #3169 Update dependencies

@typespec/rest

Bump dependencies

  • #3169 Update dependencies

Features

  • #2945 Add support for new @bodyRoot and @body distinction

@typespec/openapi

Bump dependencies

  • #3169 Update dependencies

@typespec/openapi3

Bug Fixes

  • #3218 Fix: @path property should be included in unreachable models

Bump dependencies

  • #3169 Update dependencies

Features

  • #2945 Add support for new @bodyRoot and @body distinction

@typespec/protobuf

Bump dependencies

  • #3169 Update dependencies

@typespec/prettier-plugin-typespec

Bump dependencies

  • #3169 Update dependencies

@typespec/eslint-plugin

Bump dependencies

  • #3169 Update dependencies

@typespec/html-program-viewer

Bump dependencies

  • #3169 Update dependencies

Features

  • #3191 Add sourceModels property to model view

@typespec/json-schema

Bump dependencies

  • #3169 Update dependencies

@typespec/internal-build-utils

Bump dependencies

  • #3169 Update dependencies

typespec-vs

No changes, version bump only.

typespec-vscode

Bump dependencies

  • #3169 Update dependencies

@typespec/library-linter

Bump dependencies

  • #3169 Update dependencies

tmlanguage-generator@0.5.5

08 May 01:17
dec5043
Compare
Choose a tag to compare

Bump dependencies

  • #3169 Update dependencies

@typespec/xml@0.56.0

08 May 01:17
dec5043
Compare
Choose a tag to compare

Bump dependencies

  • #3169 Update dependencies

@typespec/playground@0.2.2

08 May 01:17
dec5043
Compare
Choose a tag to compare

Bug Fixes

  • #3170 Add support for new intrinsic vs std lib split in the compiler.
  • #3151 Fix completion of keywords

Bump dependencies

  • #3169 Update dependencies

@typespec/bundler@0.1.3

08 May 01:17
dec5043
Compare
Choose a tag to compare

Bump dependencies

  • #3169 Update dependencies