From 2f53533d944dc8a4a4c1a67ba892f773e7513e96 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Tue, 2 Apr 2024 14:55:47 -0700 Subject: [PATCH] Bump versions for release 0.55.0 - april 2024 (#3096) --- ...essibility-fix-pass-2-2024-2-19-18-29-3.md | 8 --- .../allow-encode-union-2024-2-6-17-42-29.md | 8 --- ...eprecate-known-values-2024-3-2-11-42-15.md | 15 ---- ...eprecate-known-values-2024-3-2-18-48-59.md | 6 -- ...recate-projected-name-2024-1-12-21-5-53.md | 14 ---- ...recate-projected-name-2024-1-12-21-9-58.md | 6 -- .../feature-dec-ts-sig-2024-2-7-19-6-24.md | 14 ---- .../feature-dec-ts-sig-2024-2-8-21-36-50.md | 8 --- ...nt-in-template-params-2024-2-13-16-45-3.md | 8 --- ...nsupported-intrinsic-2024-2-28-19-23-35.md | 8 --- ...-union-part-conflict-2024-2-25-17-49-35.md | 8 --- ...ix-no-crash-nullable-2024-1-28-22-57-44.md | 8 --- ...ultipart-union-bytes-2024-2-12-22-52-55.md | 8 --- .../fix-swagger-ui-build-2024-3-1-18-48-1.md | 6 -- ...ion-literal-conflicts-2024-3-1-17-54-19.md | 7 -- .../fix-union-template-2024-2-26-16-22-2.md | 8 --- ...-conflict-base-model-2024-2-25-15-48-50.md | 8 --- ...n-as-error-keep-going-2024-2-5-16-55-37.md | 8 --- ...e-codefix-application-2024-2-22-17-23-9.md | 8 --- .../remove-unusued-dep-2024-2-29-14-4-43.md | 24 ------- .../scalar-versioning-2024-2-26-9-56-30.md | 7 -- .../scalar-versioning-2024-2-26-9-56-6.md | 7 -- .../swagger-ui-dist-2024-3-1-16-0-13.md | 7 -- ...-escpaed-identifiers-2024-2-27-16-22-28.md | 8 --- ...rade-deps-march-2024-2024-2-18-16-33-47.md | 25 ------- ...itest-allow-reload-js-2024-3-1-10-34-31.md | 6 -- .../website-doc-cleanup-2024-2-11-22-12-8.md | 8 --- packages/bundler/CHANGELOG.md | 7 ++ packages/bundler/package.json | 2 +- packages/compiler/CHANGELOG.md | 39 +++++++++++ packages/compiler/package.json | 2 +- packages/compiler/templates/scaffolding.json | 8 +-- packages/eslint-config-typespec/CHANGELOG.md | 11 +++ packages/eslint-config-typespec/package.json | 2 +- packages/eslint-plugin-typespec/CHANGELOG.md | 7 ++ packages/eslint-plugin-typespec/package.json | 2 +- packages/html-program-viewer/CHANGELOG.md | 7 ++ packages/html-program-viewer/package.json | 2 +- packages/http/CHANGELOG.md | 7 ++ packages/http/package.json | 2 +- packages/internal-build-utils/CHANGELOG.md | 7 ++ packages/internal-build-utils/package.json | 2 +- packages/json-schema/CHANGELOG.md | 7 ++ packages/json-schema/package.json | 2 +- packages/library-linter/CHANGELOG.md | 7 ++ packages/library-linter/package.json | 2 +- packages/openapi/CHANGELOG.md | 7 ++ packages/openapi/package.json | 2 +- packages/openapi3/CHANGELOG.md | 15 ++++ packages/openapi3/package.json | 2 +- packages/playground/CHANGELOG.md | 11 +++ packages/playground/package.json | 2 +- .../prettier-plugin-typespec/CHANGELOG.md | 7 ++ .../prettier-plugin-typespec/package.json | 2 +- packages/protobuf/CHANGELOG.md | 7 ++ packages/protobuf/package.json | 2 +- packages/rest/CHANGELOG.md | 7 ++ packages/rest/package.json | 2 +- packages/tmlanguage-generator/CHANGELOG.md | 7 ++ packages/tmlanguage-generator/package.json | 2 +- packages/typespec-vs/CHANGELOG.md | 4 ++ packages/typespec-vs/package.json | 2 +- packages/typespec-vscode/CHANGELOG.md | 7 ++ packages/typespec-vscode/package.json | 2 +- packages/versioning/CHANGELOG.md | 11 +++ packages/versioning/package.json | 2 +- packages/website/playground-versions.json | 1 + .../extending-typespec/basics.md | 6 +- .../extending-typespec/create-decorators.md | 6 +- .../extending-typespec/emitters-basics.md | 8 +++ .../extending-typespec/linters.md | 8 +-- .../version-latest/images/vscode.gif | Bin 0 -> 1711570 bytes .../libraries/http/multipart.md | 9 ++- .../http/reference/js-api/functions/$body.md | 4 +- .../reference/js-api/functions/$delete.md | 4 +- .../http/reference/js-api/functions/$get.md | 4 +- .../http/reference/js-api/functions/$head.md | 4 +- .../reference/js-api/functions/$header.md | 6 +- .../http/reference/js-api/functions/$patch.md | 4 +- .../http/reference/js-api/functions/$path.md | 4 +- .../reference/js-api/functions/$plainData.md | 4 +- .../http/reference/js-api/functions/$post.md | 4 +- .../http/reference/js-api/functions/$put.md | 4 +- .../http/reference/js-api/functions/$query.md | 6 +- .../http/reference/js-api/functions/$route.md | 8 +-- .../reference/js-api/functions/$server.md | 2 +- .../js-api/functions/$sharedRoute.md | 4 +- .../reference/js-api/functions/$statusCode.md | 4 +- .../reference/js-api/functions/$useAuth.md | 2 +- .../js-api/functions/setStatusCode.md | 2 +- .../js-api/classes/JsonSchemaEmitter.md | 2 +- .../reference/js-api/functions/$contains.md | 2 +- .../js-api/functions/$contentEncoding.md | 2 +- .../js-api/functions/$contentMediaType.md | 2 +- .../js-api/functions/$contentSchema.md | 2 +- .../reference/js-api/functions/$id.md | 6 +- .../reference/js-api/functions/$jsonSchema.md | 6 +- .../js-api/functions/$maxContains.md | 2 +- .../js-api/functions/$maxProperties.md | 2 +- .../js-api/functions/$minContains.md | 2 +- .../js-api/functions/$minProperties.md | 2 +- .../reference/js-api/functions/$multipleOf.md | 2 +- .../js-api/functions/$prefixItems.md | 4 +- .../js-api/functions/$uniqueItems.md | 2 +- .../js-api/functions/$defaultResponse.md | 4 +- .../reference/js-api/functions/$extension.md | 10 +-- .../reference/js-api/functions/$info.md | 8 +-- .../js-api/functions/$operationId.md | 8 +-- .../reference/js-api/functions/$oneOf.md | 4 +- .../reference/js-api/functions/$useRef.md | 8 +-- .../reference/js-api/functions/$field.md | 8 +-- .../reference/js-api/functions/$message.md | 6 +- .../reference/js-api/functions/$package.md | 6 +- .../reference/js-api/functions/$reserve.md | 8 +-- .../reference/js-api/functions/$stream.md | 6 +- .../reference/js-api/functions/$action.md | 4 +- .../js-api/functions/$actionSegment.md | 8 +-- .../js-api/functions/$actionSeparator.md | 2 +- .../reference/js-api/functions/$autoRoute.md | 4 +- .../js-api/functions/$collectionAction.md | 4 +- .../js-api/functions/$listsResource.md | 4 +- .../js-api/functions/$parentResource.md | 8 +-- .../js-api/functions/$readsResource.md | 4 +- .../reference/js-api/functions/$resource.md | 4 +- .../js-api/functions/$resourceLocation.md | 4 +- .../reference/js-api/functions/$segment.md | 2 +- .../reference/js-api/functions/$segmentOf.md | 8 +-- .../reference/js-api/functions/$added.md | 8 +-- .../js-api/functions/$madeOptional.md | 8 +-- .../reference/js-api/functions/$removed.md | 2 +- .../js-api/functions/$renamedFrom.md | 8 +-- .../functions/$returnTypeChangedFrom.md | 12 ++-- .../js-api/functions/$typeChangedFrom.md | 10 +-- .../reference/js-api/functions/$versioned.md | 4 +- .../release-notes/release-2024-04-02.md | 65 ++++++++++++++++++ .../js-api/enumerations/SyntaxKind.md | 57 +++++++-------- .../js-api/functions/$discriminator.md | 4 +- .../reference/js-api/functions/$doc.md | 8 +-- .../reference/js-api/functions/$encode.md | 8 +-- .../reference/js-api/functions/$error.md | 4 +- .../reference/js-api/functions/$errorsDoc.md | 4 +- .../reference/js-api/functions/$format.md | 2 +- .../js-api/functions/$friendlyName.md | 8 +-- .../js-api/functions/$inspectType.md | 4 +- .../js-api/functions/$inspectTypeName.md | 4 +- .../reference/js-api/functions/$key.md | 4 +- .../js-api/functions/$knownValues.md | 2 +- .../reference/js-api/functions/$list.md | 2 +- .../reference/js-api/functions/$maxItems.md | 6 +- .../reference/js-api/functions/$maxLength.md | 6 +- .../reference/js-api/functions/$maxValue.md | 6 +- .../js-api/functions/$maxValueExclusive.md | 6 +- .../reference/js-api/functions/$minItems.md | 6 +- .../reference/js-api/functions/$minLength.md | 6 +- .../reference/js-api/functions/$minValue.md | 6 +- .../js-api/functions/$minValueExclusive.md | 6 +- .../reference/js-api/functions/$overload.md | 4 +- .../js-api/functions/$parameterVisibility.md | 4 +- .../reference/js-api/functions/$pattern.md | 2 +- .../js-api/functions/$projectedName.md | 4 +- .../js-api/functions/$returnTypeVisibility.md | 4 +- .../reference/js-api/functions/$returnsDoc.md | 4 +- .../reference/js-api/functions/$secret.md | 2 +- .../reference/js-api/functions/$service.md | 2 +- .../reference/js-api/functions/$summary.md | 6 +- .../functions/$withDefaultKeyVisibility.md | 4 +- .../functions/$withUpdateableProperties.md | 2 +- .../functions/$withoutOmittedProperties.md | 4 +- .../reference/js-api/functions/assertType.md | 4 +- .../js-api/functions/getDeprecationDetails.md | 2 +- .../reference/js-api/functions/getEncode.md | 2 +- .../js-api/functions/getKnownValues.md | 2 +- .../js-api/functions/getPropertyType.md | 2 +- .../functions/validateDecoratorParamType.md | 4 +- .../validateDecoratorTargetIntrinsic.md | 2 +- .../reference/js-api/index.md | 1 + .../ProjectionScalarSelectorNode.md | 21 ++++++ .../interfaces/ProjectionStatementNode.md | 2 +- .../reference/js-api/type-aliases/Node.md | 1 + .../version-latest-sidebars.json | 1 + 180 files changed, 576 insertions(+), 548 deletions(-) delete mode 100644 .chronus/changes/accessibility-fix-pass-2-2024-2-19-18-29-3.md delete mode 100644 .chronus/changes/allow-encode-union-2024-2-6-17-42-29.md delete mode 100644 .chronus/changes/deprecate-known-values-2024-3-2-11-42-15.md delete mode 100644 .chronus/changes/deprecate-known-values-2024-3-2-18-48-59.md delete mode 100644 .chronus/changes/deprecate-projected-name-2024-1-12-21-5-53.md delete mode 100644 .chronus/changes/deprecate-projected-name-2024-1-12-21-9-58.md delete mode 100644 .chronus/changes/feature-dec-ts-sig-2024-2-7-19-6-24.md delete mode 100644 .chronus/changes/feature-dec-ts-sig-2024-2-8-21-36-50.md delete mode 100644 .chronus/changes/fix-comment-in-template-params-2024-2-13-16-45-3.md delete mode 100644 .chronus/changes/fix-dont-crash-unsupported-intrinsic-2024-2-28-19-23-35.md delete mode 100644 .chronus/changes/fix-multipart-union-part-conflict-2024-2-25-17-49-35.md delete mode 100644 .chronus/changes/fix-no-crash-nullable-2024-1-28-22-57-44.md delete mode 100644 .chronus/changes/fix-openapi3-multipart-union-bytes-2024-2-12-22-52-55.md delete mode 100644 .chronus/changes/fix-swagger-ui-build-2024-3-1-18-48-1.md delete mode 100644 .chronus/changes/fix-union-literal-conflicts-2024-3-1-17-54-19.md delete mode 100644 .chronus/changes/fix-union-template-2024-2-26-16-22-2.md delete mode 100644 .chronus/changes/fix-visibility-conflict-base-model-2024-2-25-15-48-50.md delete mode 100644 .chronus/changes/fix-warn-as-error-keep-going-2024-2-5-16-55-37.md delete mode 100644 .chronus/changes/more-reliable-codefix-application-2024-2-22-17-23-9.md delete mode 100644 .chronus/changes/remove-unusued-dep-2024-2-29-14-4-43.md delete mode 100644 .chronus/changes/scalar-versioning-2024-2-26-9-56-30.md delete mode 100644 .chronus/changes/scalar-versioning-2024-2-26-9-56-6.md delete mode 100644 .chronus/changes/swagger-ui-dist-2024-3-1-16-0-13.md delete mode 100644 .chronus/changes/tmlanguage-escpaed-identifiers-2024-2-27-16-22-28.md delete mode 100644 .chronus/changes/upgrade-deps-march-2024-2024-2-18-16-33-47.md delete mode 100644 .chronus/changes/vitest-allow-reload-js-2024-3-1-10-34-31.md delete mode 100644 .chronus/changes/website-doc-cleanup-2024-2-11-22-12-8.md create mode 100644 packages/website/versioned_docs/version-latest/images/vscode.gif create mode 100644 packages/website/versioned_docs/version-latest/release-notes/release-2024-04-02.md create mode 100644 packages/website/versioned_docs/version-latest/standard-library/reference/js-api/interfaces/ProjectionScalarSelectorNode.md diff --git a/.chronus/changes/accessibility-fix-pass-2-2024-2-19-18-29-3.md b/.chronus/changes/accessibility-fix-pass-2-2024-2-19-18-29-3.md deleted file mode 100644 index 01d1deffc2..0000000000 --- a/.chronus/changes/accessibility-fix-pass-2-2024-2-19-18-29-3.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: fix -packages: - - "@typespec/playground" ---- - -Add `aria` attributes for accessibility diff --git a/.chronus/changes/allow-encode-union-2024-2-6-17-42-29.md b/.chronus/changes/allow-encode-union-2024-2-6-17-42-29.md deleted file mode 100644 index df3eedfde1..0000000000 --- a/.chronus/changes/allow-encode-union-2024-2-6-17-42-29.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: feature -packages: - - "@typespec/compiler" ---- - -Enable the use of `@encode` for model properties that have a union type. This supports cases like `@encode("rfc3339") prop: utcDateTime | null` diff --git a/.chronus/changes/deprecate-known-values-2024-3-2-11-42-15.md b/.chronus/changes/deprecate-known-values-2024-3-2-11-42-15.md deleted file mode 100644 index 9e9b7b30c5..0000000000 --- a/.chronus/changes/deprecate-known-values-2024-3-2-11-42-15.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -changeKind: deprecation -packages: - - "@typespec/compiler" ---- - -Deprecate `@knownValues` decorator. Use a named union of string literal with a string variant to achieve the same result without a decorator - -Example: -```diff --enum FooKV { a, b, c} --@knownValues(FooKV) --scalar foo extends string; -+union Foo { "a", "b", "c", string } -``` diff --git a/.chronus/changes/deprecate-known-values-2024-3-2-18-48-59.md b/.chronus/changes/deprecate-known-values-2024-3-2-18-48-59.md deleted file mode 100644 index 957a83097d..0000000000 --- a/.chronus/changes/deprecate-known-values-2024-3-2-18-48-59.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: internal -packages: - - "@typespec/openapi3" ---- diff --git a/.chronus/changes/deprecate-projected-name-2024-1-12-21-5-53.md b/.chronus/changes/deprecate-projected-name-2024-1-12-21-5-53.md deleted file mode 100644 index 2236f0634b..0000000000 --- a/.chronus/changes/deprecate-projected-name-2024-1-12-21-5-53.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: deprecation -packages: - - "@typespec/compiler" ---- - -Deprecate `@projectedName` decorator. `@encodedName` should be used instead. - -Example: -```diff --@projectedName("json", "exp") -+@encodedName("application/json", "exp") -``` diff --git a/.chronus/changes/deprecate-projected-name-2024-1-12-21-9-58.md b/.chronus/changes/deprecate-projected-name-2024-1-12-21-9-58.md deleted file mode 100644 index 957a83097d..0000000000 --- a/.chronus/changes/deprecate-projected-name-2024-1-12-21-9-58.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: internal -packages: - - "@typespec/openapi3" ---- diff --git a/.chronus/changes/feature-dec-ts-sig-2024-2-7-19-6-24.md b/.chronus/changes/feature-dec-ts-sig-2024-2-7-19-6-24.md deleted file mode 100644 index 9de267d64f..0000000000 --- a/.chronus/changes/feature-dec-ts-sig-2024-2-7-19-6-24.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: internal -packages: - - "@typespec/compiler" - - "@typespec/openapi" - - "@typespec/openapi3" - - "@typespec/json-schema" - - "@typespec/protobuf" - - "@typespec/versioning" - - "@typespec/rest" - - "@typespec/http" ---- -Align TS decorators implementation types with the TypeSpec signature diff --git a/.chronus/changes/feature-dec-ts-sig-2024-2-8-21-36-50.md b/.chronus/changes/feature-dec-ts-sig-2024-2-8-21-36-50.md deleted file mode 100644 index 670ffc5622..0000000000 --- a/.chronus/changes/feature-dec-ts-sig-2024-2-8-21-36-50.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: fix -packages: - - "@typespec/eslint-config-typespec" ---- - -Ignore `generated-defs` folder diff --git a/.chronus/changes/fix-comment-in-template-params-2024-2-13-16-45-3.md b/.chronus/changes/fix-comment-in-template-params-2024-2-13-16-45-3.md deleted file mode 100644 index 8062d92e8e..0000000000 --- a/.chronus/changes/fix-comment-in-template-params-2024-2-13-16-45-3.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: fix -packages: - - "@typespec/compiler" ---- - -Grammar: Fix comments in template params not tokenized diff --git a/.chronus/changes/fix-dont-crash-unsupported-intrinsic-2024-2-28-19-23-35.md b/.chronus/changes/fix-dont-crash-unsupported-intrinsic-2024-2-28-19-23-35.md deleted file mode 100644 index 4cbbc413db..0000000000 --- a/.chronus/changes/fix-dont-crash-unsupported-intrinsic-2024-2-28-19-23-35.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: fix -packages: - - "@typespec/openapi3" ---- - -Do not crash if using an unsupported intrinsic type diff --git a/.chronus/changes/fix-multipart-union-part-conflict-2024-2-25-17-49-35.md b/.chronus/changes/fix-multipart-union-part-conflict-2024-2-25-17-49-35.md deleted file mode 100644 index f8501a86d3..0000000000 --- a/.chronus/changes/fix-multipart-union-part-conflict-2024-2-25-17-49-35.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: internal -packages: - - "@typespec/openapi3" ---- - -OpenAPI3: Fix multipart union part conflict diff --git a/.chronus/changes/fix-no-crash-nullable-2024-1-28-22-57-44.md b/.chronus/changes/fix-no-crash-nullable-2024-1-28-22-57-44.md deleted file mode 100644 index f1d30235df..0000000000 --- a/.chronus/changes/fix-no-crash-nullable-2024-1-28-22-57-44.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: fix -packages: - - "@typespec/openapi3" ---- - -Fix crash: emit `{nullable: true}` when trying to emit `null` in openapi3 diff --git a/.chronus/changes/fix-openapi3-multipart-union-bytes-2024-2-12-22-52-55.md b/.chronus/changes/fix-openapi3-multipart-union-bytes-2024-2-12-22-52-55.md deleted file mode 100644 index f5328e7012..0000000000 --- a/.chronus/changes/fix-openapi3-multipart-union-bytes-2024-2-12-22-52-55.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: fix -packages: - - "@typespec/openapi3" ---- - -Fix: OpenAPI3 not marking part of bytes or something else as `format: binary` diff --git a/.chronus/changes/fix-swagger-ui-build-2024-3-1-18-48-1.md b/.chronus/changes/fix-swagger-ui-build-2024-3-1-18-48-1.md deleted file mode 100644 index f1073d0f71..0000000000 --- a/.chronus/changes/fix-swagger-ui-build-2024-3-1-18-48-1.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -changeKind: internal -packages: - - "@typespec/playground" ---- - diff --git a/.chronus/changes/fix-union-literal-conflicts-2024-3-1-17-54-19.md b/.chronus/changes/fix-union-literal-conflicts-2024-3-1-17-54-19.md deleted file mode 100644 index 494eabf95c..0000000000 --- a/.chronus/changes/fix-union-literal-conflicts-2024-3-1-17-54-19.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -changeKind: fix -packages: - - "@typespec/openapi3" ---- - -Fix: Literal unions with the same variants keep adding duplicate entries \ No newline at end of file diff --git a/.chronus/changes/fix-union-template-2024-2-26-16-22-2.md b/.chronus/changes/fix-union-template-2024-2-26-16-22-2.md deleted file mode 100644 index 3b88f2080b..0000000000 --- a/.chronus/changes/fix-union-template-2024-2-26-16-22-2.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: fix -packages: - - "@typespec/compiler" ---- - -Fix: Union template declaration were incorrectly being finished in projection diff --git a/.chronus/changes/fix-visibility-conflict-base-model-2024-2-25-15-48-50.md b/.chronus/changes/fix-visibility-conflict-base-model-2024-2-25-15-48-50.md deleted file mode 100644 index a0599d1e68..0000000000 --- a/.chronus/changes/fix-visibility-conflict-base-model-2024-2-25-15-48-50.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: fix -packages: - - "@typespec/openapi3" ---- - -Fix visibility naming conflict when a model used with `extends` was used in different visibility. diff --git a/.chronus/changes/fix-warn-as-error-keep-going-2024-2-5-16-55-37.md b/.chronus/changes/fix-warn-as-error-keep-going-2024-2-5-16-55-37.md deleted file mode 100644 index 92305cfcc5..0000000000 --- a/.chronus/changes/fix-warn-as-error-keep-going-2024-2-5-16-55-37.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: fix -packages: - - "@typespec/compiler" ---- - -Warnings converted to error with `warn-as-error` do not prevent compilation from moving to the next stage like regular warnings diff --git a/.chronus/changes/more-reliable-codefix-application-2024-2-22-17-23-9.md b/.chronus/changes/more-reliable-codefix-application-2024-2-22-17-23-9.md deleted file mode 100644 index 07b97745ab..0000000000 --- a/.chronus/changes/more-reliable-codefix-application-2024-2-22-17-23-9.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: fix -packages: - - "@typespec/compiler" ---- - -Improve relability of application of codefixes in IDE, often it would not do anything diff --git a/.chronus/changes/remove-unusued-dep-2024-2-29-14-4-43.md b/.chronus/changes/remove-unusued-dep-2024-2-29-14-4-43.md deleted file mode 100644 index 9e5bd980d5..0000000000 --- a/.chronus/changes/remove-unusued-dep-2024-2-29-14-4-43.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -changeKind: internal -packages: - - "@typespec/bundler" - - "@typespec/compiler" - - "@typespec/eslint-config-typespec" - - "@typespec/eslint-plugin" - - "@typespec/html-program-viewer" - - "@typespec/http" - - "@typespec/internal-build-utils" - - "@typespec/json-schema" - - "@typespec/library-linter" - - "@typespec/openapi" - - "@typespec/openapi3" - - "@typespec/playground" - - "@typespec/prettier-plugin-typespec" - - "@typespec/protobuf" - - "@typespec/rest" - - tmlanguage-generator - - typespec-vscode - - "@typespec/versioning" ---- - -Dep update \ No newline at end of file diff --git a/.chronus/changes/scalar-versioning-2024-2-26-9-56-30.md b/.chronus/changes/scalar-versioning-2024-2-26-9-56-30.md deleted file mode 100644 index 09a0924452..0000000000 --- a/.chronus/changes/scalar-versioning-2024-2-26-9-56-30.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -changeKind: feature -packages: - - "@typespec/versioning" ---- - -Add support for versioning of scalars(Added, removed, renamed) \ No newline at end of file diff --git a/.chronus/changes/scalar-versioning-2024-2-26-9-56-6.md b/.chronus/changes/scalar-versioning-2024-2-26-9-56-6.md deleted file mode 100644 index 21f0dd4800..0000000000 --- a/.chronus/changes/scalar-versioning-2024-2-26-9-56-6.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -changeKind: feature -packages: - - "@typespec/compiler" ---- - -Experimental projection: Add support for scalars \ No newline at end of file diff --git a/.chronus/changes/swagger-ui-dist-2024-3-1-16-0-13.md b/.chronus/changes/swagger-ui-dist-2024-3-1-16-0-13.md deleted file mode 100644 index 2d312e5a42..0000000000 --- a/.chronus/changes/swagger-ui-dist-2024-3-1-16-0-13.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -changeKind: internal -packages: - - "@typespec/playground" ---- - -Change swagger ui dependency \ No newline at end of file diff --git a/.chronus/changes/tmlanguage-escpaed-identifiers-2024-2-27-16-22-28.md b/.chronus/changes/tmlanguage-escpaed-identifiers-2024-2-27-16-22-28.md deleted file mode 100644 index d485c06134..0000000000 --- a/.chronus/changes/tmlanguage-escpaed-identifiers-2024-2-27-16-22-28.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: fix -packages: - - "@typespec/compiler" ---- - -TmLanguage: Fix tokenization of escaped identifiers, enums and unions diff --git a/.chronus/changes/upgrade-deps-march-2024-2024-2-18-16-33-47.md b/.chronus/changes/upgrade-deps-march-2024-2024-2-18-16-33-47.md deleted file mode 100644 index eb8b9c4674..0000000000 --- a/.chronus/changes/upgrade-deps-march-2024-2024-2-18-16-33-47.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: dependencies -packages: - - "@typespec/bundler" - - "@typespec/compiler" - - "@typespec/eslint-config-typespec" - - "@typespec/eslint-plugin" - - "@typespec/html-program-viewer" - - "@typespec/http" - - "@typespec/internal-build-utils" - - "@typespec/json-schema" - - "@typespec/library-linter" - - "@typespec/openapi" - - "@typespec/openapi3" - - "@typespec/playground" - - "@typespec/prettier-plugin-typespec" - - "@typespec/protobuf" - - "@typespec/rest" - - tmlanguage-generator - - typespec-vscode - - "@typespec/versioning" ---- - -Update dependencies diff --git a/.chronus/changes/vitest-allow-reload-js-2024-3-1-10-34-31.md b/.chronus/changes/vitest-allow-reload-js-2024-3-1-10-34-31.md deleted file mode 100644 index 7770d3f3ce..0000000000 --- a/.chronus/changes/vitest-allow-reload-js-2024-3-1-10-34-31.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -changeKind: internal -packages: - - "@typespec/openapi" ---- - diff --git a/.chronus/changes/website-doc-cleanup-2024-2-11-22-12-8.md b/.chronus/changes/website-doc-cleanup-2024-2-11-22-12-8.md deleted file mode 100644 index 6d25726e3e..0000000000 --- a/.chronus/changes/website-doc-cleanup-2024-2-11-22-12-8.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking -changeKind: internal -packages: - - "@typespec/compiler" - - "@typespec/http" - - "@typespec/openapi3" ---- diff --git a/packages/bundler/CHANGELOG.md b/packages/bundler/CHANGELOG.md index 4ae55a8467..3ce88c99b5 100644 --- a/packages/bundler/CHANGELOG.md +++ b/packages/bundler/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log - @typespec/bundler +## 0.1.2 + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + + ## 0.1.1 ### Bump dependencies diff --git a/packages/bundler/package.json b/packages/bundler/package.json index af348b536a..cfe712e59a 100644 --- a/packages/bundler/package.json +++ b/packages/bundler/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/bundler", - "version": "0.1.1", + "version": "0.1.2", "author": "Microsoft Corporation", "description": "Package to bundle a TypeSpec library.", "homepage": "https://typespec.io", diff --git a/packages/compiler/CHANGELOG.md b/packages/compiler/CHANGELOG.md index 69ad9732ce..c640e810ea 100644 --- a/packages/compiler/CHANGELOG.md +++ b/packages/compiler/CHANGELOG.md @@ -1,5 +1,44 @@ # Change Log - @typespec/compiler +## 0.55.0 + +### Bug Fixes + +- [#3018](https://github.com/microsoft/typespec/pull/3018) Grammar: Fix comments in template params not tokenized +- [#3052](https://github.com/microsoft/typespec/pull/3052) Fix: Union template declaration were incorrectly being finished in projection +- [#2983](https://github.com/microsoft/typespec/pull/2983) Warnings converted to error with `warn-as-error` do not prevent compilation from moving to the next stage like regular warnings +- [#3041](https://github.com/microsoft/typespec/pull/3041) Improve relability of application of codefixes in IDE, often it would not do anything +- [#3069](https://github.com/microsoft/typespec/pull/3069) TmLanguage: Fix tokenization of escaped identifiers, enums and unions + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + +### Features + +- [#2992](https://github.com/microsoft/typespec/pull/2992) Enable the use of `@encode` for model properties that have a union type. This supports cases like `@encode("rfc3339") prop: utcDateTime | null` +- [#3053](https://github.com/microsoft/typespec/pull/3053) Experimental projection: Add support for scalars + +### Deprecations + +- [#3094](https://github.com/microsoft/typespec/pull/3094) Deprecate `@knownValues` decorator. Use a named union of string literal with a string variant to achieve the same result without a decorator + +Example: +```diff +-enum FooKV { a, b, c} +-@knownValues(FooKV) +-scalar foo extends string; ++union Foo { "a", "b", "c", string } +``` +- [#2910](https://github.com/microsoft/typespec/pull/2910) Deprecate `@projectedName` decorator. `@encodedName` should be used instead. + +Example: +```diff +-@projectedName("json", "exp") ++@encodedName("application/json", "exp") +``` + + ## 0.54.0 ### Bug Fixes diff --git a/packages/compiler/package.json b/packages/compiler/package.json index 4e8c38aff9..3957e61f16 100644 --- a/packages/compiler/package.json +++ b/packages/compiler/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/compiler", - "version": "0.54.0", + "version": "0.55.0", "description": "TypeSpec Compiler Preview", "author": "Microsoft Corporation", "license": "MIT", diff --git a/packages/compiler/templates/scaffolding.json b/packages/compiler/templates/scaffolding.json index 1227e684d3..fa460666de 100644 --- a/packages/compiler/templates/scaffolding.json +++ b/packages/compiler/templates/scaffolding.json @@ -3,12 +3,12 @@ "title": "Empty project", "description": "Create an empty project.", "libraries": [], - "compilerVersion": "0.54.0" + "compilerVersion": "0.55.0" }, "rest": { "title": "Generic REST API", "description": "Create a project representing a generic REST API", - "compilerVersion": "0.54.0", + "compilerVersion": "0.55.0", "libraries": [ "@typespec/http", "@typespec/rest", @@ -23,7 +23,7 @@ "library-ts": { "title": "TypeSpec Library (With TypeScript)", "description": "Create a new package to add decorators or linters to typespec.", - "compilerVersion": "0.54.0", + "compilerVersion": "0.55.0", "libraries": [], "files": [ { @@ -99,7 +99,7 @@ "emitter-ts": { "title": "TypeSpec Emitter (With TypeScript)", "description": "Create a new package that will be emitting typespec", - "compilerVersion": "0.54.0", + "compilerVersion": "0.55.0", "libraries": [], "files": [ { diff --git a/packages/eslint-config-typespec/CHANGELOG.md b/packages/eslint-config-typespec/CHANGELOG.md index a49cbb5a2b..ccc717de13 100644 --- a/packages/eslint-config-typespec/CHANGELOG.md +++ b/packages/eslint-config-typespec/CHANGELOG.md @@ -1,5 +1,16 @@ # Change Log - @typespec/eslint-config-typespec +## 0.55.0 + +### Bug Fixes + +- [#2122](https://github.com/microsoft/typespec/pull/2122) Ignore `generated-defs` folder + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + + ## 0.54.0 ### Bug Fixes diff --git a/packages/eslint-config-typespec/package.json b/packages/eslint-config-typespec/package.json index 03b1383e6d..d6f6ddae6c 100644 --- a/packages/eslint-config-typespec/package.json +++ b/packages/eslint-config-typespec/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/eslint-config-typespec", - "version": "0.54.0", + "version": "0.55.0", "description": "ESLint config for TypeSpec packages", "main": "index.js", "repository": { diff --git a/packages/eslint-plugin-typespec/CHANGELOG.md b/packages/eslint-plugin-typespec/CHANGELOG.md index 625682518f..cc7daf0144 100644 --- a/packages/eslint-plugin-typespec/CHANGELOG.md +++ b/packages/eslint-plugin-typespec/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log - @typespec/eslint-plugin +## 0.55.0 + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + + ## 0.54.0 ### Bump dependencies diff --git a/packages/eslint-plugin-typespec/package.json b/packages/eslint-plugin-typespec/package.json index 6de63cce07..a0e709556b 100644 --- a/packages/eslint-plugin-typespec/package.json +++ b/packages/eslint-plugin-typespec/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/eslint-plugin", - "version": "0.54.0", + "version": "0.55.0", "author": "Microsoft Corporation", "description": "Eslint plugin providing set of rules to be used in the JS/TS code of TypeSpec libraries", "homepage": "https://typespec.io", diff --git a/packages/html-program-viewer/CHANGELOG.md b/packages/html-program-viewer/CHANGELOG.md index 6902eecb68..570f10f38f 100644 --- a/packages/html-program-viewer/CHANGELOG.md +++ b/packages/html-program-viewer/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log - @typespec/html-program-viewer +## 0.55.0 + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + + ## 0.54.0 ### Bug Fixes diff --git a/packages/html-program-viewer/package.json b/packages/html-program-viewer/package.json index 0542bdc366..3396a809fb 100644 --- a/packages/html-program-viewer/package.json +++ b/packages/html-program-viewer/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/html-program-viewer", - "version": "0.54.0", + "version": "0.55.0", "author": "Microsoft Corporation", "description": "TypeSpec library for emitting an html view of the program.", "homepage": "https://typespec.io", diff --git a/packages/http/CHANGELOG.md b/packages/http/CHANGELOG.md index 100d85d1c8..cdc1709e1d 100644 --- a/packages/http/CHANGELOG.md +++ b/packages/http/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log - @typespec/http +## 0.55.0 + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + + ## 0.54.0 ### Bug Fixes diff --git a/packages/http/package.json b/packages/http/package.json index a25fa7da98..9c84c10431 100644 --- a/packages/http/package.json +++ b/packages/http/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/http", - "version": "0.54.0", + "version": "0.55.0", "author": "Microsoft Corporation", "description": "TypeSpec HTTP protocol binding", "homepage": "https://github.com/microsoft/typespec", diff --git a/packages/internal-build-utils/CHANGELOG.md b/packages/internal-build-utils/CHANGELOG.md index 27a3275384..e129494609 100644 --- a/packages/internal-build-utils/CHANGELOG.md +++ b/packages/internal-build-utils/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log - @typespec/internal-build-utils +## 0.55.0 + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + + ## 0.54.0 ### Bug Fixes diff --git a/packages/internal-build-utils/package.json b/packages/internal-build-utils/package.json index 4b079264d2..ef4ec193ee 100644 --- a/packages/internal-build-utils/package.json +++ b/packages/internal-build-utils/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/internal-build-utils", - "version": "0.54.0", + "version": "0.55.0", "author": "Microsoft Corporation", "description": "Internal library to TypeSpec providing helpers to build.", "homepage": "https://typespec.io", diff --git a/packages/json-schema/CHANGELOG.md b/packages/json-schema/CHANGELOG.md index 4d4926fa78..06feb2f0ed 100644 --- a/packages/json-schema/CHANGELOG.md +++ b/packages/json-schema/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log - @typespec/json-schema +## 0.55.0 + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + + ## 0.54.0 ### Bug Fixes diff --git a/packages/json-schema/package.json b/packages/json-schema/package.json index 93771fb04b..0d4fecaff8 100644 --- a/packages/json-schema/package.json +++ b/packages/json-schema/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/json-schema", - "version": "0.54.0", + "version": "0.55.0", "author": "Microsoft Corporation", "description": "TypeSpec library for emitting TypeSpec to JSON Schema and converting JSON Schema to TypeSpec", "homepage": "https://github.com/microsoft/typespec", diff --git a/packages/library-linter/CHANGELOG.md b/packages/library-linter/CHANGELOG.md index 10d8646639..c57ef78ad2 100644 --- a/packages/library-linter/CHANGELOG.md +++ b/packages/library-linter/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log - @typespec/library-linter +## 0.55.0 + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + + ## 0.54.0 ### Bump dependencies diff --git a/packages/library-linter/package.json b/packages/library-linter/package.json index 9c713965d2..071fe0e782 100644 --- a/packages/library-linter/package.json +++ b/packages/library-linter/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/library-linter", - "version": "0.54.0", + "version": "0.55.0", "author": "Microsoft Corporation", "description": "TypeSpec library for linting another library.", "homepage": "https://typespec.io", diff --git a/packages/openapi/CHANGELOG.md b/packages/openapi/CHANGELOG.md index 597abac7ad..13de8511cc 100644 --- a/packages/openapi/CHANGELOG.md +++ b/packages/openapi/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log - @typespec/openapi +## 0.55.0 + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + + ## 0.54.0 ### Bump dependencies diff --git a/packages/openapi/package.json b/packages/openapi/package.json index 23337eeb1c..51266ff9a3 100644 --- a/packages/openapi/package.json +++ b/packages/openapi/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/openapi", - "version": "0.54.0", + "version": "0.55.0", "author": "Microsoft Corporation", "description": "TypeSpec library providing OpenAPI concepts", "homepage": "https://typespec.io", diff --git a/packages/openapi3/CHANGELOG.md b/packages/openapi3/CHANGELOG.md index 633a1bc847..d599c35acc 100644 --- a/packages/openapi3/CHANGELOG.md +++ b/packages/openapi3/CHANGELOG.md @@ -1,5 +1,20 @@ # Change Log - @typespec/openapi3 +## 0.55.0 + +### Bug Fixes + +- [#3077](https://github.com/microsoft/typespec/pull/3077) Do not crash if using an unsupported intrinsic type +- [#2967](https://github.com/microsoft/typespec/pull/2967) Fix crash: emit `{nullable: true}` when trying to emit `null` in openapi3 +- [#3013](https://github.com/microsoft/typespec/pull/3013) Fix: OpenAPI3 not marking part of bytes or something else as `format: binary` +- [#3090](https://github.com/microsoft/typespec/pull/3090) Fix: Literal unions with the same variants keep adding duplicate entries +- [#3049](https://github.com/microsoft/typespec/pull/3049) Fix visibility naming conflict when a model used with `extends` was used in different visibility. + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + + ## 0.54.0 ### Bump dependencies diff --git a/packages/openapi3/package.json b/packages/openapi3/package.json index 63ce466ea5..06a3fd6565 100644 --- a/packages/openapi3/package.json +++ b/packages/openapi3/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/openapi3", - "version": "0.54.0", + "version": "0.55.0", "author": "Microsoft Corporation", "description": "TypeSpec library for emitting OpenAPI 3.0 from the TypeSpec REST protocol binding", "homepage": "https://typespec.io", diff --git a/packages/playground/CHANGELOG.md b/packages/playground/CHANGELOG.md index 0e9c38f9f9..80dac82f21 100644 --- a/packages/playground/CHANGELOG.md +++ b/packages/playground/CHANGELOG.md @@ -1,5 +1,16 @@ # Change Log - @typespec/playground +## 0.2.1 + +### Bug Fixes + +- [#3031](https://github.com/microsoft/typespec/pull/3031) Add `aria` attributes for accessibility + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + + ## 0.2.0 ### Bug Fixes diff --git a/packages/playground/package.json b/packages/playground/package.json index 379cc09bdf..29069fbb17 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/playground", - "version": "0.2.0", + "version": "0.2.1", "author": "Microsoft Corporation", "description": "TypeSpec playground UI components.", "homepage": "https://typespec.io", diff --git a/packages/prettier-plugin-typespec/CHANGELOG.md b/packages/prettier-plugin-typespec/CHANGELOG.md index 8ca478e408..47d05e7930 100644 --- a/packages/prettier-plugin-typespec/CHANGELOG.md +++ b/packages/prettier-plugin-typespec/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log - @typespec/prettier-plugin-typespec +## 0.55.0 + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + + ## 0.54.0 ### Bump dependencies diff --git a/packages/prettier-plugin-typespec/package.json b/packages/prettier-plugin-typespec/package.json index ad1141508c..9a9f07223f 100644 --- a/packages/prettier-plugin-typespec/package.json +++ b/packages/prettier-plugin-typespec/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/prettier-plugin-typespec", - "version": "0.54.0", + "version": "0.55.0", "description": "", "main": "dist/index.js", "scripts": { diff --git a/packages/protobuf/CHANGELOG.md b/packages/protobuf/CHANGELOG.md index 5c0170cdc8..c90500ca76 100644 --- a/packages/protobuf/CHANGELOG.md +++ b/packages/protobuf/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log - @typespec/protobuf +## 0.55.0 + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + + ## 0.54.0 ### Bump dependencies diff --git a/packages/protobuf/package.json b/packages/protobuf/package.json index 1bd52ba769..12bb567d7a 100644 --- a/packages/protobuf/package.json +++ b/packages/protobuf/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/protobuf", - "version": "0.54.0", + "version": "0.55.0", "author": "Microsoft Corporation", "description": "TypeSpec library and emitter for Protobuf (gRPC)", "homepage": "https://github.com/microsoft/typespec", diff --git a/packages/rest/CHANGELOG.md b/packages/rest/CHANGELOG.md index 35ac8855d9..a72e4d15d7 100644 --- a/packages/rest/CHANGELOG.md +++ b/packages/rest/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log - @typespec/rest +## 0.55.0 + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + + ## 0.54.0 ### Bump dependencies diff --git a/packages/rest/package.json b/packages/rest/package.json index 6fc80694c1..aeaf91b9d7 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/rest", - "version": "0.54.0", + "version": "0.55.0", "author": "Microsoft Corporation", "description": "TypeSpec REST protocol binding", "homepage": "https://typespec.io", diff --git a/packages/tmlanguage-generator/CHANGELOG.md b/packages/tmlanguage-generator/CHANGELOG.md index 482c7e169b..39273bf20a 100644 --- a/packages/tmlanguage-generator/CHANGELOG.md +++ b/packages/tmlanguage-generator/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log - tmlanguage-generator +## 0.5.4 + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + + ## 0.5.3 ### Bump dependencies diff --git a/packages/tmlanguage-generator/package.json b/packages/tmlanguage-generator/package.json index 3466bd9f47..bac1b6a8ee 100644 --- a/packages/tmlanguage-generator/package.json +++ b/packages/tmlanguage-generator/package.json @@ -1,6 +1,6 @@ { "name": "tmlanguage-generator", - "version": "0.5.3", + "version": "0.5.4", "author": "Microsoft Corporation", "description": "Helper library to generate TextMate syntax highlighting tmLanguage files.", "homepage": "https://github.com/microsoft/typespec/tree/main/packages/tmlanguage-generator", diff --git a/packages/typespec-vs/CHANGELOG.md b/packages/typespec-vs/CHANGELOG.md index 87257f06f6..9fd8c84a5a 100644 --- a/packages/typespec-vs/CHANGELOG.md +++ b/packages/typespec-vs/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log - typespec-vs +## 0.55.0 + +No changes, version bump only. + ## 0.54.0 ### Bump dependencies diff --git a/packages/typespec-vs/package.json b/packages/typespec-vs/package.json index 129cb52287..b786e811e9 100644 --- a/packages/typespec-vs/package.json +++ b/packages/typespec-vs/package.json @@ -1,7 +1,7 @@ { "name": "typespec-vs", "author": "Microsoft Corporation", - "version": "0.54.0", + "version": "0.55.0", "description": "TypeSpec Language Support for Visual Studio", "homepage": "https://typespec.io", "readme": "https://github.com/microsoft/typespec/blob/main/README.md", diff --git a/packages/typespec-vscode/CHANGELOG.md b/packages/typespec-vscode/CHANGELOG.md index 8a7c991668..e35a28540c 100644 --- a/packages/typespec-vscode/CHANGELOG.md +++ b/packages/typespec-vscode/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log - typespec-vscode +## 0.55.0 + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + + ## 0.54.0 ### Bump dependencies diff --git a/packages/typespec-vscode/package.json b/packages/typespec-vscode/package.json index 6e8839d24f..239b4b1335 100644 --- a/packages/typespec-vscode/package.json +++ b/packages/typespec-vscode/package.json @@ -1,6 +1,6 @@ { "name": "typespec-vscode", - "version": "0.54.1", + "version": "0.55.0", "author": "Microsoft Corporation", "description": "TypeSpec language support for VS Code", "homepage": "https://typespec.io", diff --git a/packages/versioning/CHANGELOG.md b/packages/versioning/CHANGELOG.md index 88fba4bdab..105e2a1d9a 100644 --- a/packages/versioning/CHANGELOG.md +++ b/packages/versioning/CHANGELOG.md @@ -1,5 +1,16 @@ # Change Log - @typespec/versioning +## 0.55.0 + +### Bump dependencies + +- [#3027](https://github.com/microsoft/typespec/pull/3027) Update dependencies + +### Features + +- [#3053](https://github.com/microsoft/typespec/pull/3053) Add support for versioning of scalars(Added, removed, renamed) + + ## 0.54.0 ### Bump dependencies diff --git a/packages/versioning/package.json b/packages/versioning/package.json index 9121476bff..d60d04f6cd 100644 --- a/packages/versioning/package.json +++ b/packages/versioning/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/versioning", - "version": "0.54.0", + "version": "0.55.0", "author": "Microsoft Corporation", "description": "TypeSpec library for declaring and emitting versioned APIs", "homepage": "https://typespec.io", diff --git a/packages/website/playground-versions.json b/packages/website/playground-versions.json index 2c3eb274fc..d2445f1649 100644 --- a/packages/website/playground-versions.json +++ b/packages/website/playground-versions.json @@ -1,4 +1,5 @@ [ + "0.55.x", "0.54.x", "0.53.x", "0.52.x", diff --git a/packages/website/versioned_docs/version-latest/extending-typespec/basics.md b/packages/website/versioned_docs/version-latest/extending-typespec/basics.md index 6ff08b930e..6928722ab7 100644 --- a/packages/website/versioned_docs/version-latest/extending-typespec/basics.md +++ b/packages/website/versioned_docs/version-latest/extending-typespec/basics.md @@ -238,9 +238,7 @@ The first step is to define how your library can be loaded from the test framewo 1. Create a new file `./src/testing/index.ts` with the following content ```ts -import { resolvePath } from "@typespec/compiler"; -import { createTestLibrary } from "@typespec/compiler/testing"; -import { fileURLToPath } from "url"; +import { createTestLibrary, findTestPackageRoot } from "@typespec/compiler/testing"; export const MyTestLibrary = createTestLibrary({ name: "", @@ -279,7 +277,7 @@ Create a new file `test/test-host.js` (change `test` to be your test folder) ```ts import { createTestHost, createTestWrapper } from "@typespec/compiler/testing"; -import { RestTestLibrary } from "/rest/testing"; +import { RestTestLibrary } from "@typespec/rest/testing"; import { MyTestLibrary } from "../src/testing/index.js"; export async function createMyTestHost() { diff --git a/packages/website/versioned_docs/version-latest/extending-typespec/create-decorators.md b/packages/website/versioned_docs/version-latest/extending-typespec/create-decorators.md index dd127be96c..717c917f1e 100644 --- a/packages/website/versioned_docs/version-latest/extending-typespec/create-decorators.md +++ b/packages/website/versioned_docs/version-latest/extending-typespec/create-decorators.md @@ -1,13 +1,13 @@ --- id: create-decorators -title: How to create TypeSpec decorators +title: Decorators --- -# How to create TypeSpec decorators +# Decorators TypeSpec decorators are implemented as JavaScript functions. The process of creating a decorator can be divided into two parts: -1. [(Optional) Declare the decorator signature in TypeSpec](#declare-the-decorator-signature) +1. [Declare the decorator signature in TypeSpec](#declare-the-decorator-signature) (optional but recommended) 2. [Implement the decorator in JavaScript](#implement-the-decorator-in-javascript) ## Declare the decorator signature diff --git a/packages/website/versioned_docs/version-latest/extending-typespec/emitters-basics.md b/packages/website/versioned_docs/version-latest/extending-typespec/emitters-basics.md index ae24e24970..66d6f851eb 100644 --- a/packages/website/versioned_docs/version-latest/extending-typespec/emitters-basics.md +++ b/packages/website/versioned_docs/version-latest/extending-typespec/emitters-basics.md @@ -7,6 +7,14 @@ title: Emitters TypeSpec emitters are libraries that utilize various TypeSpec compiler APIs to reflect on the TypeSpec compilation process and generate artifacts. The TypeSpec standard library includes an emitter for OpenAPI version 3.0. However, you might want to emit TypeSpec to a different output format. One of the main advantages of TypeSpec is its ease of use as a single source of truth for all data shapes, and the simplicity of creating an emitter contributes significantly to this. +## Emitter design + +TypeSpec is designed to support many protocols and many output formats. It is important that an emitter is designed to select only the part of the TypeSpec spec that makes sense for them. Having emitters designed correctly will allow a user to define multiple layers of their API in a single TypeSpec document, allowing tools to view the entire picture of the service. + +For example assuming a User wants to emit `openapi3` and `protobuf` but each API has a different set of operations and is split into different namespaces. + +It is important that there is a way for the openapi3 emitter and protobuf emitter to select only the part of the spec that applies to them. For instance, the protobuf emitter should not try to emit the http service namespace and fail because of missing annotations. + ## Starting out TypeSpec emitters are a unique type of TypeSpec library, so they follow the same initial setup instructions. diff --git a/packages/website/versioned_docs/version-latest/extending-typespec/linters.md b/packages/website/versioned_docs/version-latest/extending-typespec/linters.md index 972506acba..7d6bd88576 100644 --- a/packages/website/versioned_docs/version-latest/extending-typespec/linters.md +++ b/packages/website/versioned_docs/version-latest/extending-typespec/linters.md @@ -1,9 +1,9 @@ --- id: linters -title: Understanding linters +title: Linters --- -# Understanding linters +# Linters ## Linter versus `onValidate` @@ -78,8 +78,8 @@ context.reportDiagnostic({ codefixes: [ defineCodeFix({ id: "add-model-suffix", - description: "Add 'Model' suffix to model name", - apply: (program) => { + label: "Add 'Model' suffix to model name", + fix: (program) => { program.update(model, { name: `${model.name}Model`, }); diff --git a/packages/website/versioned_docs/version-latest/images/vscode.gif b/packages/website/versioned_docs/version-latest/images/vscode.gif new file mode 100644 index 0000000000000000000000000000000000000000..6f14a6438e8f6e4e3f6e469072a027448a1c77d3 GIT binary patch literal 1711570 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 d3y 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