Skip to content

fix(typespec-ts): preserve migrated client options - #5260

Open
Jeff Fisher (xirzec) wants to merge 3 commits into
mainfrom
xirzec-typespec-ts-option-forwarding
Open

fix(typespec-ts): preserve migrated client options#5260
Jeff Fisher (xirzec) wants to merge 3 commits into
mainfrom
xirzec-typespec-ts-option-forwarding

Conversation

@xirzec

Copy link
Copy Markdown
Member

Summary

  • Generated operations now evaluate operationOptionsToRequestParameters once and merge normalized requestParameters.headers after generated service headers, enabling core compatibility normalization without being overwritten.
  • Generated scoped client option interfaces expose the package-local deprecated credentialScopes option with precedence credentials.scopes -> credentialScopes -> generated defaults.
  • Generated logging defaults preserve the complete loggingOptions bag.
  • The change includes the Chronus patch note and updated modular baselines.

Validation

  • Full modular unit suite: 44 files / 665 tests
  • Focused client-options tests
  • Build
  • Lint
  • Prettier
  • Git diff check
  • Change status

Related issue

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown
Contributor

All changed packages have been documented.

  • @azure-tools/typespec-ts
Show changes

@azure-tools/typespec-ts - fix ✏️

Forward legacy headers, credential scopes, and logging options in modular clients, including a,> deprecated package-local credentialScopes alias for clients that use OAuth scopes.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Preserves legacy client options in generated Azure TypeScript clients while maintaining current option precedence and normalized request handling.

Changes:

  • Merges normalized request headers after generated service headers.
  • Preserves logging options and supports deprecated credentialScopes.
  • Adds focused tests, regenerated baselines, and a patch note.
Show a summary per file
File Description
.chronus/changes/fix-js-option-forwarding-2026-08-17.md Adds the patch note.
packages/typespec-ts/src/modular/build-client-context.ts Exposes deprecated scoped credential options.
packages/typespec-ts/src/modular/helpers/client-helpers.ts Preserves logging and credential options.
packages/typespec-ts/src/modular/helpers/operation-helpers.ts Merges normalized request headers.
packages/typespec-ts/test/util/emit-util.ts Initializes credential metadata in tests.
packages/typespec-ts/test/modular-unit/client-options.test.ts Tests option forwarding behavior.
packages/typespec-ts/test/modular-unit/scenarios/anonymous/anonymous.md Updates generated baseline.
packages/typespec-ts/test/modular-unit/scenarios/api-operations/apiOperations.md Updates headers and logging baselines.
packages/typespec-ts/test/modular-unit/scenarios/api-operations/azureCoreOperations.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/api-operations/reservedWordOperations.md Updates generated header baselines.
packages/typespec-ts/test/modular-unit/scenarios/client-context/clientContext.md Updates logging baselines.
packages/typespec-ts/test/modular-unit/scenarios/client-context/optionalApiVersion.md Updates logging baseline.
packages/typespec-ts/test/modular-unit/scenarios/enum-union/enumUnion.md Updates generated header baselines.
packages/typespec-ts/test/modular-unit/scenarios/example/example.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/models-generator/modelsGenerator.md Updates generated header baselines.
packages/typespec-ts/test/modular-unit/scenarios/models/api-version/apiVersionAsFixedEnum.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/models/azureCoreErrorModels.md Updates generated header baselines.
packages/typespec-ts/test/modular-unit/scenarios/models/missingErrorResponseModel.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/models/models.md Updates generated header baselines.
packages/typespec-ts/test/modular-unit/scenarios/models/nullable/nullableUnion.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/models/response/headerCollectionPrefixRequiredSkipSignature.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/models/response/headerCollectionPrefixSkipSerialization.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/models/treatUnknownAsRecord.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/operations/armPatchWithUnionResponse.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/operations/body-param/bytesWithDifferentContentType.md Updates generated header baselines.
packages/typespec-ts/test/modular-unit/scenarios/operations/bodyMetadataExtraction.md Updates generated header baselines.
packages/typespec-ts/test/modular-unit/scenarios/operations/clientDefaultValue.md Updates generated header baselines.
packages/typespec-ts/test/modular-unit/scenarios/operations/cookie-param/ignoreCookieParam.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/operations/deserializeEmptyBody.md Updates generated header baselines.
packages/typespec-ts/test/modular-unit/scenarios/operations/error-deserialization/xmlErrorDeserialization.md Updates generated header baselines.
packages/typespec-ts/test/modular-unit/scenarios/operations/header-param/headerParamWithClientInitialization.md Updates headers and logging baselines.
packages/typespec-ts/test/modular-unit/scenarios/operations/header-param/optionalConstantHeaderParam.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/operations/lroPaging.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/operations/operations.md Updates generated header baselines.
packages/typespec-ts/test/modular-unit/scenarios/operations/override.md Updates generated header baselines.
packages/typespec-ts/test/modular-unit/scenarios/operations/pagination/disablePagination.md Updates generated header baselines.
packages/typespec-ts/test/modular-unit/scenarios/operations/path-param/pathParameterNamedPath.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/operations/path-param/pathParamUrlTemplate.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/operations/query-param/queryParamWithClientInitialization.md Updates headers and logging baselines.
packages/typespec-ts/test/modular-unit/scenarios/operations/wrapNonModelReturn.md Updates generated header baselines.
packages/typespec-ts/test/modular-unit/scenarios/samples/parameters/bodyOptionalCheck.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/samples/parameters/bodyOptionalParameterName.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/samples/parameters/bodyReadonlyOptionalCheck.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/samples/parameters/parameterNormalization.md Updates generated header baseline.
packages/typespec-ts/test/modular-unit/scenarios/samples/parameters/parameterOrdering.md Updates generated header baseline.

Review details

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

  • Files reviewed: 45/45 changed files
  • Comments generated: 0
  • Review effort level: Balanced

@github-actions

github-actions Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

📦 Package size report

✅ No notable package size changes compared to the base branch.

13 package(s) with no notable change
Package Packed (base → head) Δ Packed Unpacked (base → head) Δ Unpacked
@azure-tools/typespec-ts 527.17 KB → 527.81 KB +659 B (+0.1%) 2.54 MB → 2.54 MB +3.03 KB (+0.1%)
@azure-tools/typespec-java 13.51 MB → 13.51 MB -58 B (-0.0%) 15.03 MB → 15.03 MB
@azure-tools/azure-http-specs 146.63 KB → 146.63 KB 1.16 MB → 1.16 MB
@azure-tools/typespec-autorest 80.93 KB → 80.93 KB 395.06 KB → 395.06 KB
@azure-tools/typespec-autorest-canonical 7.42 KB → 7.42 KB 26.00 KB → 26.00 KB
@azure-tools/typespec-azure-core 129.43 KB → 129.43 KB 702.77 KB → 702.77 KB
@azure-tools/typespec-azure-portal-core 42.40 KB → 42.40 KB 192.91 KB → 192.91 KB
@azure-tools/typespec-azure-resource-manager 171.92 KB → 171.92 KB 1.04 MB → 1.04 MB
@azure-tools/typespec-azure-rulesets 5.16 KB → 5.16 KB 32.09 KB → 32.09 KB
@azure-tools/typespec-client-generator-core 227.76 KB → 227.76 KB 1.23 MB → 1.23 MB
@azure-tools/typespec-go 258.55 KB → 258.55 KB 1.32 MB → 1.32 MB
@azure-tools/typespec-metadata 15.91 KB → 15.91 KB 62.26 KB → 62.26 KB
@azure-tools/typespec-python 42.20 KB → 42.20 KB 164.85 KB → 164.85 KB

Packed = gzipped .tgz published to npm. Unpacked = total extracted size. 🆕 added, 🗑️ removed. Packages from the core/ submodule are not included.
🔴 grew · 🟢 shrank — only changes of at least 512 B and 0.5% are marked.

@pkg-pr-new

pkg-pr-new Bot commented Aug 19, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@azure-tools/typespec-ts@5260

commit: 5baeefd

@azure-sdk-automation

Copy link
Copy Markdown
Contributor

You can try these changes here

🛝 Playground 🌐 Website

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

emitter:typescript Issues for @azure-tools/typespec-ts emitter

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants